【发布时间】:2013-04-18 10:31:22
【问题描述】:
我正在制作 android 应用程序,其中我在一个开放的助手类中制作了 5 个表。当我的架构中有 ON DELETE CASCADE 时,我遇到了这个问题。我知道 ON DELETE CASCADE 的概念。这里我复制我的两张表之一。
private static final String MEDICINE_TABLE = "create table medicine_details (_mid integer primary key autoincrement, "
+ " medicine_name text, type text, take_with text, m_did integer not null,"
+ "FOREIGN KEY(m_did) REFERENCES doctor_details(did)"
+ " ON DELETE CASCADE" + ");";
private static final String SCH_TAB = "CREATE TABLE schedule_details(sid INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "medi_stdate TEXT,medi_end_date TEXT,time_sch TEXT,rept TEXT, alarm_id NUMBER, "
+ "u_id integer not null, doc_id integer not null, mid integer not null, "
+ "FOREIGN KEY(u_id) REFERENCES member_details(_id)"
+ " ON DELETE CASCADE,"
+ "FOREIGN KEY(doc_id) REFERENCES doctor_details(did)"
+ " ON DELETE CASCADE,"
+ "FOREIGN KEY(mid) REFERENCES medicine_details(_mid)"
+ " ON DELETE CASCADE" + ");";
每当我尝试从医学中删除时,它只会从医学表中删除,而不是从日程表中删除。这里的medicine 表是主表,schedule 表是子表。
【问题讨论】:
-
你用的是什么安卓版本? SQLite 3.6.19+ 中添加了外键支持,该功能首先随 Android 2.2 Froyo 一起提供。
-
我的sqlite版本是3.7.15.2
-
你确定吗?对我来说这听起来不太可能。据我所知,Android 4.2“只有”sqlite 3.7.11。您是指嵌入在您的设备/模拟器中的 sqlite 还是您在开发 PC 上使用的以“离线”方式准备数据库文件的 sqlite?
-
当我在 Firefox 中使用 SQL 管理器工具看到我的数据库时,它给了我这个 SQLite 版本,所以告诉我如何检查我的 SQLite 版本?
-
看到这个stackoverflow.com/questions/2421189/…我正在使用4.0.3