SQL Server 2008中的更新触发器

问题描述

| 我是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]
(未经测试的代码警告)     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...