在 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_name
和 constraint_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 语句执行。
请注意,我没有对此进行测试,所以如果我有任何拼写错误,我会留给您修改。以上示例应该足以让您入门。
给定一个 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_name
和 constraint_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 语句执行。
请注意,我没有对此进行测试,所以如果我有任何拼写错误,我会留给您修改。以上示例应该足以让您入门。