我正在尝试编写触发器,并希望有一个AFTER UPDATE
触发器,以便:
我尝试了这个触发器,但即使Details1中Status的值设置为Not Issued,它也会更新Master1。此外,我应该在哪里以及如何包含Master2更新,还是应该为Master2更新专门编写另一个触发器
CREATE TRIGGER Master1_TypeAIssued_StatusUpdate
ON Details1
AFTER UPDATE
AS
BEGIN
IF (SELECT COUNT(Details1.Status)
FROM Details1
INNER JOIN Master1 ON Details1.OrderID = dbo.Master1.OrderID
WHERE Details1.Status = 'Not Issued' AND
Details1.Type = 'TypeA') = 0
BEGIN
RETURN
END
UPDATE Master1 SET Master1.Status = 'TypeA Issued'
END
OrderID Type Status
W1 TypeA Not Issued
W1 TypeA Not Issued
W1 TypeA Not Issued
W1 TypeB Not Issued
W1 TypeB Not Issued
W1 TypeC Not Issued
W2 TypeA Not Issued
W2 TypeA Not Issued
W2 TypeB Not Issued
Master1 Table
OrderID Status
W1 Pending
W2 Pending
Master2 Table
OrderID Status
W1 Pending
W2 Pending
尝试将您的状况改为:
IF (SELECT COUNT(Details1.Status)
FROM Details1
INNER JOIN Master1 ON Details1.OrderID = dbo.Master1.OrderID
WHERE Details1.Status = 'Not Issued' AND
Details1.Type = 'TypeA'
AND Details1.OrderId IN (Select OrderId from Inserted)) > 0
BEGIN
RETURN
END
这是因为当存在状态为“非问题”的记录时,您不应更新