繁体   English   中英

MySQL:获取约束名称并将其放在一条语句中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM