[英]MySQL: Get constraint name and drop it in one statement
我从以下位置获取约束名称:
SELECT
constraint_name
FROM
information_schema.REFERENTIAL_CONSTRAINTS
WHERE
constraint_schema = 'db' AND table_name = 'table';
然后将其从桌子上掉下来。 在本地计算机上手动完成时,它可以工作。 现在,它弄乱了我的Jenkins构建的db迁移脚本。
有一种方法可以在一个语句中做到这一点吗?
更新资料
以下查询使我拒绝用户root @ localhost的访问
DELETE
FROM
information_schema.REFERENTIAL_CONSTRAINTS
WHERE
constraint_schema = 'db' AND table_name = 'table';
SELECT concat('ALTER TABLE ', TABLE_NAME, ' DROP FOREIGN KEY ', CONSTRAINT_NAME, ';') as theString
FROM information_schema.key_column_usage
WHERE CONSTRAINT_SCHEMA = 'so_gibberish'
AND referenced_table_name IS NOT NULL;
+---------------------------------------------------+
| theString |
+---------------------------------------------------+
| ALTER TABLE fc_junction DROP FOREIGN KEY fc_cat; |
| ALTER TABLE fc_junction DROP FOREIGN KEY fc_food; |
+---------------------------------------------------+
它自动生成要运行的字符串。 必要时按摩订购。 然后离开。 请注意,在Workbench / sqlyog中,您当然没有表栏输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.