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