问题描述
|
我是SQL Server的新手
我必须创建一个更新触发器
CREATE TRIGGER on_update
ON [GP].[dbo].[TABLE1]
AFTER UPDATE
AS
DECLARE @PKCOL1 int
DECLARE @COL2 int
DECLARE @COL3 nvarchar(36)
DECLARE @COL4 nvarchar(36)
DECLARE @COL5 nvarchar(126)
DECLARE @COL6 datetime
DECLARE @COL7 datetime
BEGIN
SELECT @PKCOL1 = [COL-A],@COL2 = [COL-B],@COl3 = NULL,@COL4 = [COL-C],@COL5 = [COL-D],@COL6 = [COL-E]
FROM INSERTED
UPDATE [dbo].[TABLE2]
SET [COL2] = @COL2,[COL3] = @COL3,[COL4] = @COL4,[COL5] = @COL5
WHERE COL2 = @PKCOL1
我在哪里出现语法错误。
@ PKCOL1附近的语法不正确。
欧尼可以帮我吗...
解决方法
首先,答案可能是因为您有一个BEGIN而没有匹配的END语句。
其次,这更重要-您的触发器假设一次仅更新一行。每次操作仅触发一次触发器,并且可以更新许多行(即,INSERTED表具有多行)。在您的代码中,您仅从INSERTED中检索单个行,并使用该行中的值更新TABLE2。您最好执行以下操作:
UPDATE Table2 SET
[Col2] = i.[Col-B],[Col3] = NULL,[Col4] = i.[Col-C],[Col5] = i.[Col-D]
FROM Table2
JOIN INSERTED i ON Table2.Col2 = i.[Col-A]
(未经测试的代码警告)