MySQL删除没有名称的外键

时间:2016-09-09 01:14:20

标签: mysql

我正在尝试创建一个脚本,该脚本将从几个不同的MySQL DB中删除没有设置名称的外键约束。我创建了以下脚本:

SET @CN := (SELECT CONSTRAINT_NAME
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  table_name = 'inventory' and referenced_table_name='product_code' and referenced_column_name='shipping_code');

ALTER TABLE inventory DROP FOREIGN KEY @CN;

正确获取约束名称。但是它抱怨ALTER TABLE命令中的变量@CN。为什么这不起作用?

1 个答案:

答案 0 :(得分:5)

MySQL希望有一个固定名称。所以,只需使用动态SQL:

set @sql = 'ALTER TABLE inventory DROP FOREIGN KEY @CN';
set @sql = replace(@sql, '@CN', @CN);

prepare alterTable from @sql;
execute alterTable;