开发者社区> 问答> 正文

mysql中的外键 新增 更新 删除操作问题

我现在有两张表,一张role表,其中记录了角色id pid,还有一张表是access表,其中有role_id role_pid,我设置access表的role_id字段为role表的id字段的外键,那么:

  1. 在新增access表数据的时候,检测插入的数据role_id的值是否存在于role表中,这个操作是mysql自己做还是要程序员做
  2. 在role表的更新操作中,假设将id=1 pid=0 的数据修改为 id=1 pid=2 ,修改之后按理说要将access表中的pid也修改过来,这个操作是mysql做还是程序员做。
  3. 删除role表数据时,检测该记录的id值是否被access表中的数据所用,这个操作是mysql做还是程序员做。

展开
收起
小旋风柴进 2016-03-11 15:36:56 2430 0
1 条回答
写回答
取消 提交回答
  • role表和access表之间有外检约束:

    (1)MySQL自行判断,如果不存在会返回出错信息

    (2)role表id更新,access表role_id会更新,但role_pid没有外键约束,不会自动更新(可以用触发器实现同步更新,也可以在程序里面更新)。

    (3)由于access表存在role_id外检,删除role表中的数据,access表中的数据会根据外键策略的设定进行删除或者保留(外检约束策略常见的有4种:cascade、set null、No action、Restrict)。

    2019-07-17 18:59:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像