簡體   English   中英

觸發器將一條記錄插入另一個表的新行

[英]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

您需要將Insertedt1表的.primarykeycol替換為表的實際主鍵列 - 這是將Inserted行與實際數據表鏈接所必需的

暫無
暫無

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

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