簡體   English   中英

SQL Server 2008 中的更新觸發器

[英]Update Trigger in SQL Server 2008

我是 SQL 服務器的新手

我必須為更新創建觸發器

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

我收到 where contition 的語法錯誤。

@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]

(未經測試的代碼警告)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM