您的位置:首页 > 数据库

SqLite数据库的外键问题

2016-12-16 21:02 295 查看

问题一、外键的开启和关闭

老版本的SqLite数据库不支持外键,现在的SqLite3数据库支持。

SqLite3数据库的外键默认是关闭的,所以需要手动打开:

PRAGMA foreign_keys;     //结果为 0 <=>关闭; 1 <=> 打开
PRAGMA foreign_keys = ON;   //打开外键
PRAGMA foreign_keys = OFF;   //关闭外键


问题二、外键设置需要注意的地方

在一个表中,一个列既可以是主键,也可以是外键。

如果,A表中的列1是外键,参照的是B表列1’,那么列1’必须是B的主键(列1’具有unique约束)。但是不能有在B表中 primary key(1’,2’,…) 这种有和列1’共同形成的联合主键出现,否则操作表时将会出现错误。

问题三、查询语句问题

两个表的列名一样时,做select column_name时,一定要标明哪个表的列名。

在做删除操作时,

DELETE FROM code WHERE course_id = (SELECT course_id FROMR course WHERE teacher_id = ?)


一个teacher_id对应的course_id可能是多条,那么这条语句只能删除code表中一种course_id的记录。此时要设置一个while循环删除干净。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: