Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带外键约束的多语句SQL delete_Mysql_Sql - Fatal编程技术网

Mysql 带外键约束的多语句SQL delete

Mysql 带外键约束的多语句SQL delete,mysql,sql,Mysql,Sql,我将MySQL 5.5与具有外键约束的复杂模式一起使用 我想执行多个update和deleteSQL语句 执行这些语句的子集后,可能会违反外键约束 在所有这些语句执行之后,不应该出现外键约束冲突 我知道级联,我不想使用它,因为有些更改需要更复杂的逻辑 我的问题是,有没有一种方法可以将我的多条语句组合在一起(作为多条语句、事务等),这样外键约束直到全部完成后才被检查?(如果出现错误,则不会执行任何一个?MySQL不执行延迟约束检查。根据手册 与SQL标准的偏差:与一般的MySQL一样,在SQL中

我将MySQL 5.5与具有外键约束的复杂模式一起使用

我想执行多个
update
delete
SQL语句

执行这些语句的子集后,可能会违反外键约束

在所有这些语句执行之后,不应该出现外键约束冲突

我知道级联,我不想使用它,因为有些更改需要更复杂的逻辑


我的问题是,有没有一种方法可以将我的多条语句组合在一起(作为多条语句、事务等),这样外键约束直到全部完成后才被检查?(如果出现错误,则不会执行任何一个?

MySQL不执行延迟约束检查。根据手册

与SQL标准的偏差:与一般的MySQL一样,在SQL中 插入、删除或更新多行的语句,InnoDB检查 按行列出唯一和外键约束。在表演外语时 密钥检查,InnoDB在子级或父级上设置共享行级锁 它必须查看的记录InnoDB检查外键约束 立即;检查不会延迟到事务提交。 根据SQL标准,默认行为应该延迟 检查。也就是说,约束只在整个SQL语句完成后才被检查 语句已被处理。直到InnoDB实现延迟 约束检查,有些事情是不可能的,例如删除 使用外键引用自身的记录

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