2013-02-26 124 views
0

我想寫一個更新表Y後更新表X的觸發器。更新另一張表後觸發器更新一張表

我試圖搜索網頁並編寫一些代碼,但沒有。

目前我的代碼是:

CREATE TRIGGER trg_Update_YCR_Status 
ON dbo.tbl_YellowCard_Transactions 
AFTER UPDATE,INSERT 
AS 
BEGIN 

    UPDATE dbo.tbl_YellowCard_Requests 
    SET YellowCard_Status = 

END 

我該怎麼辦呢?

+0

你想在你的Update語句中使用Status的值是什麼?哪個RDBMS? – sgeddes 2013-02-26 13:48:38

+0

我們應該如何猜測您想要更新該列的值? – Lamak 2013-02-26 13:52:40

+0

我想用表dbo.tbl_YellowCard_Transactions上更新行的值更新fienld「YellowCard_Status」,列:「YellowCard_Status」。 SQL SERVER 2008 R2 – Aviadjo 2013-02-26 14:16:49

回答

1

你有正確的想法。您只需在表Y上創建一個觸發器,然後針對表X發出一個UPDATE語句,就像您上面所說的那樣。

在SQL Server中,如果您想讓在剛插入值表X的新值,你可以參考inserted表,它表示所添加或更新的數據*,例如:

UPDATE requests 
SET requests.YellowCard_Status = inserted.YellowCard_Status 
FROM dbo.tbl_YellowCard_Requests requests 
JOIN inserted ON requests.FieldName = inserted.FieldName 

我知道你可以在SQL Server中做到這一點。我不確定這是否適用於其他RDBMS's。

*對於INSERT語句,插入的表包含任何新行。對於UPDATE聲明,將會有一個包含舊數據的deleted表和包含作爲更新結果的新數據的inserted表。

+0

嗨,我不明白爲什麼我需要在這裏加入? 我寫了這個: \t UPDATE \t dbo.tbl_YellowCard_Requests \t SET YellowCard_Status = inserted.YellowCard_Status \t FROM dbo.tbl_YellowCard_Transactions \t JOIN插在dbo.tbl_YellowCard_Requests.YellowCard_Status = inserted.YellowCard_Status ,但我得到的錯誤: 消息4104,級別16,狀態1,過程trg_Update_YCR_Status,行8 無法綁定多部分標識符「inserted.YellowCard_Status」。 – Aviadjo 2013-02-26 14:20:49

+0

你不想加入YellowCard_Status,你想加入任何字段鏈接'tbl_YellowCard_Transactions'和'dbo.tbl_YellowCard_Requests'。連接的原因是應始終編寫觸發器來處理多行更新或插入,因此我們需要確保正確的行正在更新。 – 2013-02-26 14:23:01

+0

感謝您的幫助。 最後我寫了這個: \t更新請求 \t SET YellowCard_Status = inserted.YellowCard_Status \t FROM dbo.tbl_YellowCard_Requests請求 \t WHERE YellowCard_Request_ID = inserted.YellowCard_Request_ID \t JOIN插在requests.YellowCard_Request_ID = inserted.YellowCard_Request_ID ,但我得到加入行上的一個arror – Aviadjo 2013-02-26 14:27:16