![](/img/trans.png)
[英]How to use SQL TRIGGER to insert rows from another table into a new one?
[英]Trigger to insert one record to new rows from another table
我有一個將數據插入數據庫的小應用程序。
我有這樣的東西
dbo.system.table1(col1, col2, col3)
和table2(col1)
( table2.col1
只是一行)。
我想做的是在下訂單時insert the table2.col1 into table1.col3
中。
此外table2.col1
每天更新兩次,因此每次使用table1
下達新訂單時,我都需要保留舊的table1.col3
更改。
我試過了
CREATE TRIGGER dbo.TR_CHANGES
ON dbo.SYSTEM
AFTER INSERT
AS
UPDATE table1
SET table1.col3 = (SELECT col1
FROM table2
WHERE table1.col3 = table2.col1)
但它結束了所有行的 col3 更新。
您需要在語句中包含Inserted
偽表,以查找實際更新的行 - 我建議使用正確的JOIN
語法而不是那些嵌套的子查詢 - 對我來說似乎更容易閱讀和理解。
所以試試這個:
CREATE TRIGGER dbo.TR_CHANGES
ON dbo.SYSTEM
AFTER INSERT
AS
UPDATE t1
SET col3 = t2.col1
FROM table1 t1
INNER JOIN table2 t2 ON t1.col3 = t2.col1
INNER JOIN inserted i ON t1.primarykeycol = i.primarykeycol
您需要將Inserted
和t1
表的.primarykeycol
替換為表的實際主鍵列 - 這是將Inserted
行與實際數據表鏈接所必需的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.