SqLite数据库的外键问题

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

  • 老版本的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循环删除干净。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值