[英]Delete record from one table based on column values in another
我需要創建某種觸發器,以便在我的signup表中的所有相關記錄都設置為1的情況下,從事件表中刪除事件記錄。
events
----------
eventID
eventName
eventLocation
signedUp
----------
signedID
eventID
empID
viewed
已查看字段默認為0,但是當用戶查看與該事件有關的消息時,該用戶將設置為1,一旦所有用戶都查看了該消息,則所有標記都將設置為1,這時我要刪除相關的從事件表中記錄,如何創建觸發器來執行此操作?
Create TRIGGER [dbo].[<tr_name>]
ON [dbo].[signedUp]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
if exists(select s.eventID from signedUp s
inner join inserted i on i.eventid = s.eventid
group by s.eventID
having count(s.eventID) = SUM(s.viewed))
delete e from events e inner join inserted i on i.eventid = e.eventid
END
嘗試這個:
CREATE OR REPLACE TRIGGER signedup_sau -- statement after update
AFTER UPDATE ON signedup
DELETE FROM events
WHERE NOT EXISTS (SELECT 1
FROM signedup
WHERE signedup.eventid = events.eventid
AND signedup.viewed != 1);
END;
觸發器必須在整個UPDATE
語句運行后運行,因為在行級觸發器中引用同一表既不可能也不合邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.