簡體   English   中英

SQL Server觸發另一個表中的更新列

[英]SQL Server trigger update column from another table

我正在嘗試創建一個相當簡單的SQL Server觸發器,希望有人可以提供幫助。

我有一個具有如下結構的表:

表格1:

CREATE TABLE `teg_priority` (
    `UCIDN` BIGINT(50) NULL DEFAULT NULL,
    `CIDN` BIGINT(50) NOT NULL,
    `CustomerName` VARCHAR(200) NOT NULL,
    `NGM` VARCHAR(150) NULL DEFAULT NULL,
    `Service_Manager` VARCHAR(150) NULL DEFAULT NULL,
    `CBS` LONGTEXT NULL,
    `Tag` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`CIDN`)
)

和另一個表(表2):

CREATE TABLE `custalign` (
    `UCIDN` BIGINT(20) NOT NULL,
    `CIDN` BIGINT(20) NOT NULL,
    `CustomerName` VARCHAR(255) NOT NULL,
    PRIMARY KEY (`CIDN`)
)

我正在嘗試設置一個觸發器,每次將新記錄插入到第一個表中時,都會運行以下查詢作為觸發器來更新表1中的字段UCIDN

update teg_priority
set teg_priority.UCIDN = (select UCIDN from custalign 
where teg_priority.CIDN = custalign.CIDN)

上面的查詢有效,我只是不知道如何將其編寫為觸發語句。

請幫忙。

CREATE TRIGGER dbo.Teg_priority_after_insert 
ON dbo.teg_priority AFTER INSERT
AS

UPDATE inserted
set inserted.UCIDN = (select UCIDN from custalign 
where inserted.CIDN = custalign.CIDN)

那就是你的答案。 您可能會考慮改變方法; 假設它不需要完全重做您的流程。 在不知道您最終要完成的工作時,我無法提出更多建議。

在SQL Server觸發器中,有一個inserted表和一個deleted表會自動生成,您可以參考該表。 作為每個語句AFTER [INSERT],[UPDATE],[DELETE]的結果,每個記錄分別包含新記錄和舊記錄。 AFTER INSERT和UPDATE觸發器可訪問inserted表,而AFTER UPDATE和DELETE觸發器可訪問deleted表。

這可能比您想知道的要多,但是我認為您將從簡短inserted表在我的代碼中的位置的解釋中受益。

[在此處盡可能不使用觸發器時,請插入所有通常的警告。]

試試這個..希望這會幫助你

對於MySQL

CREATE TRIGGER teg_priorityTrigger AFTER INSERT ON teg_priority
    FOR EACH ROW 
BEGIN
    UPDATE inserted
    set inserted.UCIDN = (select UCIDN from custalign 
    where inserted.CIDN = custalign.CIDN)
END

對於SQL Server

CREATE TRIGGER teg_priorityTrigger ON dbo.teg_priority AFTER INSERT
    AS
      UPDATE inserted
      set inserted.UCIDN = (select UCIDN from custalign 
      where inserted.CIDN = custalign.CIDN)

希望這對您有幫助...

暫無
暫無

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

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