MySql脚本临时更改外键约束以级联然后返回

MySql脚本临时更改外键约束以级联然后返回,mysql,foreign-keys,cascade,restrict,Mysql,Foreign Keys,Cascade,Restrict,我需要对一个有很多“受限”约束的复杂数据库进行更改 具体地说,我需要对UserInfo表中的Id字段重新编号,许多其他表在更新和删除时都有外键“RESTICT” 我想创建一个脚本,用于: 查找具有约束的所有表“UserInfo”表的“Id”字段的外键 将约束外键加载到变量中 更改依赖表以“删除”外键 更改依赖表,在删除和更新时为外键添加一个带有“Cascade”的值 …我将在此处插入更新查询… 更改依赖表以“删除”外键 更改依赖表以添加回原始外键 我只是不知道如何执行步骤2,将约束加载到变量中

我需要对一个有很多“受限”约束的复杂数据库进行更改

具体地说,我需要对UserInfo表中的Id字段重新编号,许多其他表在更新和删除时都有外键“RESTICT”

我想创建一个脚本,用于:

查找具有约束的所有表“UserInfo”表的“Id”字段的外键 将约束外键加载到变量中 更改依赖表以“删除”外键 更改依赖表,在删除和更新时为外键添加一个带有“Cascade”的值 …我将在此处插入更新查询… 更改依赖表以“删除”外键 更改依赖表以添加回原始外键 我只是不知道如何执行步骤2,将约束加载到变量中

我搜索了整个信息模式数据库,找到了约束名称,即userprefs\u ibfk\u 1。但它没有定义它们是什么类型的约束,即“限制删除”。是否有一些secrect代码来确定它们是什么类型的约束

我可能可以使用SHOW CREATE TABLE UserInfo,但是我找不到一种方法将结果加载到一个变量中,在这个变量上我可以执行字符串函数


我将非常感谢您的帮助。

您很接近,您需要检查引用约束。更新规则或删除规则:

您可以将此查询包装在一个文件中,使用迭代结果,然后从中构建和执行

SELECT constraint_name
FROM information_schema.referential_constraints
WHERE
    referenced_table_name = 'UserInfo'
    AND ( update_rule <> 'CASCADE' OR delete_rule <> 'CASCADE' )