我有这两个表级别和翻译。在级别表中,对翻译有一个外键限制。SQL语句看起来像这样
Translation table:
CREATE TABLE Translation(idTranslation INTEGER PRIMARY KEY AUTOINCREMENT, de TEXT NOT NULL,frTEXT NOT NULL);
Level table:
CREATE TABLE Level (idLevel INTEGER PRIMARY KEY, fkTranslation INTEGER NOT NULL, status INTEGER NOT NULL,FOREIGN KEY (fkTranslation) REFERENCES Translation ( idTranslation ) ON DELETE CASCADE);
但是现在,当我试图删除条目fron级别时,相应的翻译条目未删除!
,不,我还没有忘记放置
db.execSQL("PRAGMA foreign_keys=ON;");
onopen()。
也就在
检查删除命令之前db.execSQL("PRAGMA foreign_keys;");
如果它返回并返回1,因此其活动。
有人知道我可以测试什么或在哪里做错了?我已经测试了很多东西,以至于我不再知道错误在哪里。
谢谢您已提前
当试图删除正在引用的记录thorugh thorugh作为外键约束的记录时,使用级联来防止数据库丢弃参考约束错误。
在您的情况下,删除级别记录不会造成这种情况。它只会删除参考记录,但不会删除正在引用的记录。
它以相反的方式工作。如果删除翻译记录,则相应的级别记录将级联,即被删除,因为否则,它将引用不再存在的翻译记录。
如果您期望它能正常工作,那就没什么意义。例如,假设我有一个客户表和订单表。订单必须参考客户。如果删除客户,也可以删除订单,因为我不能有不参考客户的订单。但是,如果删除了订单,则删除客户是没有意义的。拥有没有订单的客户对于数据库是一个完全有效的状态。