Sql-Server
使用觸發器創建重複項
如果將新行插入 table1(至少我認為),我已經創建了一個觸發器來惰性化 table2。查詢是這樣的:
CREATE TRIGGER project_insert ON TABLE1 AFTER INSERT AS BEGIN Insert into TABLE2 (ProjectID, Status, Period) SELECT ProjectID , Status , Period = concat(FORMAT(GETDATE(), 'yyy'), FORMAT(GETDATE(), 'MM')) FROM TABLE1 WHERE Status in (1, 2)
這似乎有效,因為它在我將項目添加到 table1 後插入項目,但是每次我添加一個新項目時,觸發器似乎為每個項目插入一個新行,我在 table1 中。我希望它只添加新項目。
這是可行的嗎?謝謝!
您需要使用特殊的虛擬表 INSERTED 表示已插入的行導致觸發器觸發並使用 PK 將其加入到您的 Table2 (我認為在這種情況下為 ProjectID)
Insert into TABLE2 (ProjectID, Status, Period) SELECT ProjectID , Status , Period = concat(FORMAT(GETDATE(), 'yyy'), FORMAT(GETDATE(), 'MM')) FROM TABLE1 T INNER JOIN INSERTED I ON T.ProjectID = i.ProjectID WHERE Status in (1, 2)