如何写一个基于行更新的触发器

How to write a Trigger based on row update

我是第一次使用触发器,现在遇到了一些问题,

我有 3 个表,InvoiceHead、InvoiceDetails、InventoryMaster。

当我更新 InvoiceHead 的 'Status' 字段(从 0 到 1)时,InvoiceDetails 和 InventoryMaster 的 'Status' 字段需要根据更新的行进行更改。

关系: InvoiceHead_id=InvoiceDetails_id(FK)和 InventoryMaster_Processid=InvoiceHead_id (FK)

如何在 InvoiceHead 中编写触发器?

请帮忙解决这个问题..

试试这个

create trigger your_trigger
on InvoiceHead
after update
as
//declare @status int;
//select @status=i.status from inserted i;  
//IF @status == 1 
//BEGIN

update d
set d.status = b.status
from InvoiceDetails as d
join inserted as b 
on a.InvoiceDetails_id = b.InvoiceHead_id
where b.status == 1; 

update m
set m.status = b.status
from InventoryMaster  as m
join inserted as b 
on m.InventoryMaster_Processid = b.InvoiceHead_id
where b.status == 1;


end
go  

但请记住,在 SQL 中,触发器对整个更新起作用,这与 oracle 中的 rowwise 不同。因此,如果此触发器一次触发不止一行,我的代码将无法满足您的要求。您需要对其进行微调。