我有35张表country_id
我想做以下(伪代码)
UPDATE {all tables containing country_id}
SET country_id = 1
WHERE country_id = 2
有人可以帮忙构建这个sql吗?
提前致谢。
答案 0 :(得分:2)
也许我的代码可以帮助您找到解决方案。
我遇到了类似的问题。我的数据库有76个外键到users
。id
,我需要增加10的所有ID。最简单的方法是将外键ON UPDATE状态设置为CASCADE。但是当我创建所有FK时我犯了错误,所以所有这些都被设置为NO ACTION。
幸运的是我找到了解决方案。此代码生成SQL查询以将所有FK更新为我的数据库中user
。id
的所有FK:
SELECT
CONCAT("
ALTER TABLE `",TABLE_NAME,"`
DROP FOREIGN KEY `",CONSTRAINT_NAME,"`;
ALTER TABLE `",TABLE_NAME,"`
ADD CONSTRAINT `",CONSTRAINT_NAME,"` FOREIGN KEY (`",COLUMN_NAME,"`)
REFERENCES `users` (`id`)
ON DELETE NO ACTION
ON UPDATE CASCADE;
")
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'users' AND REFERENCED_COLUMN_NAME = 'id';