當使用Python 3和SQLite3時,在執行時cursor.execute("DELETE FROM my_table WHERE my_column IS NULL;"),我收到錯誤sqlite3.IntegrityError: FOREIGN KEY constraint failed即使我connection.execute("PRAGMA foreign_keys = ON;")在那之前就這樣做了。是否設置不能foreign_keys保證ON其他表中具有引用已my_table刪除行的外鍵列的行也被刪除,從而防止發生此錯誤,或者我是否誤解了 的功能PRAGMA foreign_keys?
1 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
my_table
您是否在其他表中定義了使用操作引用列的列ON DELETE CASCADE
,例如:
columnInOtherTable?INTEGER?REFERENCES?my_table(columnInMyTable)?ON?DELETE?CASCADE
如果是,那么您的代碼應該可以工作,除非下面還有與級聯刪除相關的其他級別。
如果沒有,那么你應該這樣做。
這是ON DELETE CASCADE
強制刪除引用行的操作。
當然PRAGMA foreign_keys
必須是ON
。
添加回答
舉報
0/150
提交
取消