2010-02-19 116 views
0

我是這個主題的新手。 我想要這樣的東西。如何在sqlite3中創建觸發器?

我有兩個表在我的sqliteDatabase一個是主,另一個是孩子。 現在,如果我從主服務器刪除記錄,假設我從主服務器刪除了一行,其中id = 5,那麼自動刪除id = 5的子表中的所有記錄。 我不知道如何創建觸發器以及如何應用外鍵約束,因此有人請告訴我一種在firefox的sqlite3管理器中執行此操作的方法。 感謝

+0

如果您有SQLite版本3.6.19或更高版本,您可以在沒有觸發器的情況下執行此操作。有關外鍵信息,請參閱Peter Lang的答案。 – 2010-02-19 14:42:42

+0

是的,3.6.19和更高版本支持外鍵。連接後執行「pragma foreign_keys = on」就不要忘了。 – 2010-02-19 17:35:29

+0

我不知道版本我在哪裏可以看到我的版本我有火狐sqlite經理ver 0.5.11 – 2010-02-20 05:14:13

回答

3

你並不需要一個觸發,你的外鍵會做,如果你定義ON DELETE CASCADE

CREATE TABLE child(
    id   INTEGER, 
    some_info TEXT, 
    master_id INTEGER, 
    FOREIGN KEY(master_id) REFERENCES master(id) ON DELETE CASCADE 
); 

請參閱documentation about foreign keys

編輯:

如果你真的需要使用觸發器來做到這一點,看看Foreing Key Triggers

+0

它不起作用 – 2010-02-20 05:19:37

+0

看看這個鏈接 http://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers – 2010-02-20 05:20:02

+0

你可以爲此創建一個觸發器? – 2010-02-20 05:42:40