码迷,mamicode.com
首页 > 移动开发 > 详细

iOS sqlite3外键级联删除问题解决

时间:2016-04-08 11:43:40      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

最近学习使用数据库,以前上学的时候也学过外键和级联删除。

NSString *sql=@"CREATE TABLE PlanModel (Id integer,name text,constraint plan_key primary key (Id))";

NSString *sql=@"CREATE TABLE SystemModel (Id integer,planId integer,name text,foreign key (planId) references PlanModel(Id) on delete cascade on update cascade,constraint system_key primary key (Id,planId))";

照理说在建表的时候sql语句如上面这段语句就行了,但是经过实验证明了并没有级联删除,即SystemModel中删除了,本表中关于PlanModel的id对应的纪录并没有删除。经过查阅发现,sqlite支持级联,但默认级联属性是关团的。

NSString *foreign=@"PRAGMA foreign_keys=1"

[[DBManager sharedDBManager] executeNonQuery:foreign];

NSString *sql=[NSString stringWithFormat:@"DELETE FROM PlanModel WHERE Id=‘%@‘",model.Id];

[[DBManager sharedDBManager] executeNonQuery:sql];

在执行删除的sql语句前先执行"PRAGMA foreign_keys=1"就可以了。

iOS sqlite3外键级联删除问题解决

标签:

原文地址:http://www.cnblogs.com/Master-W/p/5367243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!