2013-02-26 116 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