2014-03-05 40 views
0

我在我的SQLite Android的數據庫中的以下表:的android sqlite的刪除記錄正在排隊與另一個記錄外鍵

CREATE TABLE MAIN (
_ID INTEGER PRIMARY KEY ASC AUTOINCREMENT, 
NAME TEXT, 
..... 
CURRENT_CARD INTEGER 
FOREIGN KEY (CURRENT_CARD) REFERENCES CARD (_ID)); 

CREATE TABLE CARD (
_ID INTEGER PRIMARY KEY ASC AUTOINCREMENT, 
..... 

現在我想刪除下列方式從我的卡表記錄:

DELETE FROM CARD WHERE _ID IN (10,11,12,...); 

一切正常,直到我有卡表中的記錄被鏈接到主表,例如。讓我們承認ID爲11的卡在主表中有相應的記錄。當刪除卡11時,我想設置相應的CURRENT_CARD字段用於記錄ex。 1在MAIN中爲空(我不想刪除MAIN中的整個記錄​​,只是爲了清空一列)。

如何以最簡單的方式做到這一點?如果可能作爲一個sql語句...

回答

1

使用ON DELETE SET NULL actionFOREIGN KEY

請記住使用pragma foreign_keys='ON'啓用外鍵支持。

+0

我應該將此添加到主表嗎?問題是程序已被用戶使用,那麼我可以用ON DELETE SET NULL以某種方式更改以前創建的表嗎? – user2707175

+0

您可以將舊數據遷移到新表中,刪除舊錶並重命名新的表。 – laalto

+0

你不會讓我太高興,很多工作......我想知道是否有更簡單的解決方案.... – user2707175