SQL服务器删除后插入触发错误
SQL Server insert after delete Trigger error
当从原始 table 中删除一行时,我试图将一行插入到新的 table 中,但是当我 运行 删除时,我一直收到以下错误记录在案。
我阅读了错误消息的详细信息,它说它与无法插入的数据类型有关,但我不明白这一点,因为我复制了确切的 table 结构,它已从中删除并被插入到.
Msg 8152, Level 16, State 13, Procedure DeleteEmpTR, Line 5
String or binary data would be truncated.
The statement has been terminated.
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;
*/
- 您应该检查 table 的
Employees
和 DeletedEmp
列是否具有相同的列数据类型。 (数据定义)
- 检查
char and varchar
的所有列是否具有相同的长度。 Char(n)
和 VarChar(n)
,其中 n 是字符串的长度。
错误 String or binary data would be truncated
通常是当要插入的字符串的长度比目标的 table 列可以容纳 多 时。
当从原始 table 中删除一行时,我试图将一行插入到新的 table 中,但是当我 运行 删除时,我一直收到以下错误记录在案。
我阅读了错误消息的详细信息,它说它与无法插入的数据类型有关,但我不明白这一点,因为我复制了确切的 table 结构,它已从中删除并被插入到.
Msg 8152, Level 16, State 13, Procedure DeleteEmpTR, Line 5 String or binary data would be truncated. The statement has been terminated.
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;
*/
- 您应该检查 table 的
Employees
和DeletedEmp
列是否具有相同的列数据类型。 (数据定义) - 检查
char and varchar
的所有列是否具有相同的长度。Char(n)
和VarChar(n)
,其中 n 是字符串的长度。
错误 String or binary data would be truncated
通常是当要插入的字符串的长度比目标的 table 列可以容纳 多 时。