Mysql 带外键约束的多语句SQL delete
我将MySQL 5.5与具有外键约束的复杂模式一起使用 我想执行多个Mysql 带外键约束的多语句SQL delete,mysql,sql,Mysql,Sql,我将MySQL 5.5与具有外键约束的复杂模式一起使用 我想执行多个update和deleteSQL语句 执行这些语句的子集后,可能会违反外键约束 在所有这些语句执行之后,不应该出现外键约束冲突 我知道级联,我不想使用它,因为有些更改需要更复杂的逻辑 我的问题是,有没有一种方法可以将我的多条语句组合在一起(作为多条语句、事务等),这样外键约束直到全部完成后才被检查?(如果出现错误,则不会执行任何一个?MySQL不执行延迟约束检查。根据手册 与SQL标准的偏差:与一般的MySQL一样,在SQL中
update
和delete
SQL语句
执行这些语句的子集后,可能会违反外键约束
在所有这些语句执行之后,不应该出现外键约束冲突
我知道级联,我不想使用它,因为有些更改需要更复杂的逻辑
我的问题是,有没有一种方法可以将我的多条语句组合在一起(作为多条语句、事务等),这样外键约束直到全部完成后才被检查?(如果出现错误,则不会执行任何一个?MySQL不执行延迟约束检查。根据手册 与SQL标准的偏差:与一般的MySQL一样,在SQL中 插入、删除或更新多行的语句,InnoDB检查 按行列出唯一和外键约束。在表演外语时 密钥检查,InnoDB在子级或父级上设置共享行级锁 它必须查看的记录InnoDB检查外键约束 立即;检查不会延迟到事务提交。 根据SQL标准,默认行为应该延迟 检查。也就是说,约束只在整个SQL语句完成后才被检查 语句已被处理。直到InnoDB实现延迟 约束检查,有些事情是不可能的,例如删除 使用外键引用自身的记录 因此,无法仅在一组SQL语句的末尾检查约束