首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有外键约束的多语句SQL delete

带有外键约束的多语句SQL delete
EN

Stack Overflow用户
提问于 2012-12-16 17:24:52
回答 1查看 108关注 0票数 0

我使用的是具有外键约束的复杂模式的MySQL 5.5。

我想执行多个updatedelete SQL语句。

在执行了这些语句的子集之后,可能会出现违反外键约束的情况。

在执行完所有这些语句之后,不应该出现违反外键约束的情况。

我的问题是,有没有一种方法可以将我的多个语句组合在一起(作为多语句、事务等),以便直到所有外键约束都完成后才进行检查?(如果有错误,那么它们都不会被执行?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-16 17:33:58

MySQL不实现延迟约束检查。从手册上看,

标准的背离:与通常的MySQL一样,在插入、删除或更新许多行的SQL语句中,InnoDB逐行检查UNIQUE和FOREIGN KEY约束。执行外键检查时,InnoDB会在必须查看的子级或父级记录上设置共享行级锁。InnoDB会立即检查外键约束;检查不会推迟到事务提交。根据SQL标准,默认行为应该是延迟检查。也就是说,只有在处理完整个SQL语句之后才会检查约束。在InnoDB实现延迟约束检查之前,有些事情是不可能的,比如删除使用外键引用自身的记录。

因此,无法仅在一组SQL语句的末尾检查约束。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13900007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档