我需要删除一个外键,但我不知道它的名称。 我不想删除表中的所有索引。
我正在尝试使用以下子查询来执行此操作
ALTER TABLE `onboarding_requests`
DROP FOREIGN KEY (SELECT `CONSTRAINT_NAME` FROM `INFORMATION_SCHEMA.KEY_COLUMN_USAGE`
WHERE `TABLE_NAME` = 'onboarding_requests' AND `COLUMN_NAME` = 'partner_responsible');
但它返回:
SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(SELECT
CONSTRAINT_NAME
FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE `TABL' at line 2
最佳答案
不能在数据定义语句中使用变量替换。换句话说,您必须在 DROP FOREIGN KEY
语句中给出外键的字面名称。
如何解决 SQL 的这种固有限制?顺便说一句,所有 SQL(不仅仅是 MySQL)都禁止这样做。用您最喜欢的语言(python?php>)编写一个小程序,从信息模式中检索数据实体的名称,然后使用字符串连接来创建您需要的数据定义语句。
关于mysql - 使用子查询删除外键以获取其名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38786631/