删除触发器错误后插入SQL Server

时间:2015-05-26 01:38:10

标签: sql sql-server triggers

当我从原始表中删除一行时,我试图在新表中插入一行,但是当我在记录上运行删除时,我一直收到以下错误。

我阅读了错误消息的详细信息,并说它与数据类型无法插入有关,但我不理解这一点,因为我复制了已删除的确切表结构以插入。

  

消息8152,级别16,状态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; 
*/

1 个答案:

答案 0 :(得分:0)

  • 您应该检查两个表EmployeesDeletedEmp列是否具有相同的列数据类型。 (数据定义)
  • 检查char and varchar的任何列长度是否相同。 Char(n)VarChar(n),其中 n 是字符串的长度。

错误String or binary data would be truncated通常是要插入的字符串的长度更多,而不是目标的表列可以容纳的长度。