Я пытаюсь вставить строку в новую таблицу, когда строка удалена из исходной таблицы, но я продолжаю получать следующую ошибку при запуске удаления в записи.SQL Server insert after delete Ошибка триггера
Я прочитал подробности сообщения об ошибке, и он говорит, что он имеет какое-то отношение к типу данных, не может быть вставлен, но я не понимаю этого, так как я скопировал точную структуру таблицы, в которую он был удален, чтобы быть вставленным в.
Msg 8152, Level 16, State 13, процедура DeleteEmpTR, линия 5 Строка или двоичные данные будут усечены. Заявление было прекращено.
SELECT * INTO dbo.DeletedEmp
FROM Original.Employees
WHERE 1=2;
CREATE TRIGGER dbo.DeleteEmpTR ON dbo.Employees
AFTER DELETE
AS
INSERT INTO dbo.DeletedEmp
SELECT d.col1, d.col2, ...
FROM deleted d
WHERE empid not in (SELECT empid FROM inserted);
/*
--tests
DELETE FROM dbo.Employees
WHERE empid = 9
SELECT * FROM dbo.DeletedEmp;
*/
Казалось бы, 'Original.Employees' и' dbo.Employees' не имеют одинаковых определений столбцов. –
** никогда никогда ** использовать 'select *'. Всегда явно указывайте столбцы. Сделайте это, и ваш код, вероятно, сработает –
Примечание: если ваш триггер действительно выглядит так, как вы показали (это просто триггер 'AFTER DELETE'), то проверка' вставлен' не имеет смысла. Он всегда * будет пустым для триггера удаления. –