Я пробую свои силы в написании триггеров и хочу, чтобы триггер AFTER UPDATE
был таким, что:
Только при обновлении всех записей " TypeA "(через пользовательский интерфейс) до " Выдано ", -> для каждого уникального OrderID:
Статус Master1 (для того же OrderID) должен быть обновлен до ' TypeA Issued ».
Аналогично, когда все TypeB выданы в Details1, Master1.Status должен иметь значение « TypeB Issued » и т. Д. Для других типов
Поскольку количество строк для каждого типа(в Details1) может отличаться, я использую значение счетчика Not Issued в качестве условия, так как триггер должен срабатывать только тогда, когда счетчик становится 0
Master2.Status должен бытьобновлено до TypeA Выдается только для всех изменений состояния TypeA (на Выдано) в таблице Details1.
Я пробовал этот триггер, но его обновление Master1, даже если значение Status в Details1 установлено наНе выдается.Кроме того, где и как я должен включить обновление 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