簡體   English   中英

根據另一個表中的列值從一個表中刪除記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM