MySQL删除没有名称的外键

4
我正在尝试创建一个脚本,用于从多个不同的MySQL数据库中删除没有设置名称的外键约束。我已经创建了以下脚本:
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个回答

6

MySQL需要一个固定的名称。因此,只需使用动态SQL:

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

prepare alterTable from @sql;
execute alterTable;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接