2016-08-05 62 views
0

我需要刪除外鍵,但我不知道它的名稱。 我不想刪除表中的所有索引。使用子查詢刪除外鍵以獲取其名稱

我試着用以下的子查詢

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錯誤(1064):你在你的SQL語法錯誤;檢查對應於您MariaDB的服務器版本的權利 語法使用附近的 手冊「(SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE其中`TABL」第2行

+0

@juergend返回一個結果 –

+0

嘗試'顯示索引從onboarding_requests' –

+0

返回6個結果。事情是我不想知道密鑰的名稱,我想讓這個查詢工作,不管外鍵的名字。 –

回答

1

不能使用數據定義語句變量替換。在換句話說,您必須在DROP FOREIGN KEY聲明中給出外鍵的字面名稱

如何解決SQL的這種固有限制?順便說一句,不僅僅是MySQL,所有的SQL都禁止這樣做。用你最喜歡的語言編寫程序(python?php>)從inf中檢索數據實體的名稱ormation模式,然後使用字符串連接來創建您需要的數據定義語句。