mysql - 使用子查询删除外键以获取其名称

标签 mysql

我需要删除一个外键,但我不知道它的名称。 我不想删除表中的所有索引

我正在尝试使用以下子查询来执行此操作

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 FROM INFORMATION_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/

相关文章:

python - MySql 无法在同一目录中找到文件?

mysql - 外键引用语法错误

php - 在PHP中将多维数组插入mysql表的最佳方法是什么

php - MySQL:当某物等于 NULL 时会发生什么?

php - android使用php连接mysql

mysql - 尝试在 ejabberd (17.07) 上的 android 设备上使用 smack api(4.2) 注册用户时出现错误

mysql - 将 Group By 应用于 If 语句结果

c# - Azure Application Insights Analytics 查询联合和列比较

php - 语法错误还是引擎错误?

php - 更新语句不适用于我的 php 代码