我正在尝试编写触发器,并且希望使用AFTER UPDATE
触发器,以便:
仅当所有“ TypeA ”记录(通过UI)更新为“ 已发布”时,->为每个唯一的OrderID:
Master1的状态(对于相同的OrderID)应更新为' TypeA 发出”。
类似地,当所有TypeB在Details1中发布时, Master1.Status应该为“ 已颁发B型”,对于其他类型,依此类推
由于每种类型的行数(在Details1中)可以变化,因此我将“未发出”的计数值用作条件,因为仅在计数变为0时才需要触发触发器
Master2.Status将更新为TypeA,仅针对Details1表中所有TypeA状态更改(已更改为“已发布”)。
我尝试了此触发器,但是即使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
答案 0 :(得分:0)
尝试将您的情况更改为以下内容:
teamA
这是因为当记录的状态为“非问题”时,您不应该更新