在 MariaDB 中删除具有动态 table 和约束名称的外键

Delete foreign keys with dynamic table and constraint names in MariaDB

给定一个 MariaDB table customer,其他 table 有外键约束,我正在使用以下语句查询那些 table 名称:

SELECT TABLE_NAME,
       COLUMN_NAME,
       CONSTRAINT_NAME,
       REFERENCED_TABLE_NAME,
       REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'customer';

现在,我想从上述查询中删除所有 table 中的外键,但我不知道该怎么做。结果应类似于以下内容,其中 table_nameconstraint_name 是表示上述查询结果的变量。

ALTER TABLE table_name DROP FOREIGN KEY constraint_name;

您可以使用该查询格式化必要的 SQL 语句:

SELECT CONCAT(
  'ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` ',
  'DROP FOREIGN KEY `', CONSTRAINT_NAME, '`;'
) AS _sql
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'customer';

这将产生一组字符串。将每个作为新的 SQL 语句执行。

请注意,我没有对此进行测试,所以如果我有任何拼写错误,我会留给您修改。以上示例应该足以让您入门。