美文网首页
添加外键约束的时候遇到的问题

添加外键约束的时候遇到的问题

作者: 苍老师的眼泪 | 来源:发表于2020-11-30 00:12 被阅读0次

    有一个orders表,另一个是order_items表,order_items表的order_id是orders表的id,现在想要在某个order记录被删除的时候,与之相关的order_item要被数据库自动删除。

    方案,在order_items表中添加一个外键约束,设置on delete为cascade级联删除,根据mysql官方文档的描述,目前只有InnoDB这个数据库引擎支持外键约束。Foreign key constraints are supported for the InnoDB storage engine only. For other storage engines, the foreign key syntax is correctly parsed but not implemented.

    容易忽略的点1:当order_items表中有order表不存在的id时,索引无法建立(已有数据不满足约束条件,无法在此基础上建立外键约束)

    容易忽略的点2: 在插入数据时,应注意插入顺序,order_items不能引用order表中没有的id,所以ord要要先插入order表,再插入order_item表。

    容易忽略的点3: order_items中的外键属性必须要有一个索引,比如index类型的索引

    容易踩到的坑:
    原本来说,在mysql workbench中点点鼠标即可完成以上操作,但是在进行添加外键时
    ,mysql workbench容易抽风,此时可用命令手动执行:

    ALTER TABLE `wxmall`.`order_items` 
    ADD CONSTRAINT `fk_order_id`
      FOREIGN KEY (`order_id`)
      REFERENCES `wxmall`.`orders` (`id`)
      ON DELETE CASCADE
      ON UPDATE NO ACTION;
    

    相关文章

      网友评论

          本文标题:添加外键约束的时候遇到的问题

          本文链接:https://www.haomeiwen.com/subject/cxilwktx.html