2013-12-12 86 views
1

說我的學生,他們的課程表,它們的總等級分平均:有沒有辦法在同一個表上創建多個DELETE觸發器?

CREATE TABLE [records](
    student TEXT NOT NULL, 
    class TEXT DEFAULT '',    
    gpa REAL DEFAULT 0.0); 

在該表中,學生既可以丟棄一類...

DELETE FROM records WHERE student=? AND class=? 

...或輟學:

DELETE FROM records WHERE student=? 

每個事件都應該激活一個不同的觸發器。如何在SQLite中編寫這些觸發器?因爲...

CREATE TRIGGER [drop_a_class] AFTER DELETE ON records 
    WHEN (DELETE FROM records WHERE student=old.student AND class=old.class) 
BEGIN 
    ... 
END; 

...不起作用。

在此先感謝。

+0

據我所知,這是不可能的。爲什麼不把你的功能放在一個單一的? –

+0

@IgorPopov:我已經改變了「成績」欄來回答這個問題。如果學生下課,觸發器可能會改變學生的GPA。如果學生退學,觸發器可以將他的信息附加在'school_dropout'表中。你能想一想我的例子嗎? –

+0

從事教育技術工作後,我強烈建議,如果您的應用程序有任何可能在生產環境中使用的情況,那麼徹底刪除記錄並不是您想要處理這些情況的方式。 – NotMe

回答

0

documentation說:

的SQLite只支持FOR EACH ROW觸發器,而不是FOR EACH STATEMENT觸發器。

而您在WHEN子句中的信息只是要刪除的記錄內容。

您不能在觸發器內區分這些情況。 你必須在你的應用程序中實現它。

相關問題