当我从原始表中删除一行时,我试图在新表中插入一行,但是当我在记录上运行删除时,我一直收到以下错误。
我阅读了错误消息的详细信息,并说它与数据类型无法插入有关,但我不理解这一点,因为我复制了已删除的确切表结构以插入。
消息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;
*/
答案 0 :(得分:0)
Employees
和DeletedEmp
列是否具有相同的列数据类型。 (数据定义)char and varchar
的任何列长度是否相同。 Char(n)
和VarChar(n)
,其中 n 是字符串的长度。错误String or binary data would be truncated
通常是要插入的字符串的长度更多,而不是目标的表列可以容纳的长度。