gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:56:28 25 4
gpt4 key购买 nike

我需要更改具有大量“RESTRICTED”约束的复杂数据库。

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

我想创建一个脚本:

  1. 找到所有对“UserInfo”表的“Id”字段有约束(外键)的表
  2. 将约束(外键)加载到变量中
  3. 更改从属表以“删除”外键
  4. 更改从属表以在删除和更新时添加具有“级联”的外键
  5. ……我将在此处插入更新查询……
  6. 更改从属表以“删除”外键
  7. 更改从属表以添加回原始外键

我只是不知道如何执行第 2 步,将约束加载到变量中。

我搜索了整个 information_schema 数据库并找到了约束名称(即 userprefs_ibfk_1)。但它没有定义它们是什么类型的约束(即“RESTRICT on Delete”)。是否有一些 secret 代码可以确定它们是什么类型的约束?

我也许可以使用SHOW CREATE TABLE UserInfo,但我找不到将结果加载到变量(我可以在其上执行字符串函数)的方法。

如果有任何帮助,我将不胜感激。

最佳答案

你很接近,你需要检查 referential_constraints.update_ruledelete_rule:

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

您可以将此查询包装在 stored procedure 中, 用 a cursor 迭代结果, 构建并执行 prepared statements从它。

关于MySql 脚本临时将外键约束更改为级联然后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com