2016-08-05 11 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サーバのバージョンに対応 マニュアルを確認してください「( `TABL INFORMATION_SCHEMA.KEY_COLUMN_USAGE FROM CONSTRAINT_NAMEをSELECT」ライン2

+0

@juergendは1つの結果を返します –

+0

「SHOW INDEX FROM onboarding_requests」を試す –

+0

6件の結果が見つかりました。私はキーの名前を知りたくないので、外部キーの名前に関係なくこのクエリを機能させたいと思っています。 –

答えて

1

ではあなたが。データ定義文で変数置換を使用することはできません言い換えれば、DROP FOREIGN KEYステートメントでリテラルキーの文字名を指定する必要があります。

この固有のSQL制限を回避するにはどうしたらいいですか?すべてのSQLは、MySQLだけでなく、これを禁止します。あなたの好きな言語(python?php>)のプログラムを使って、infからデータエンティティの名前を取得するormationスキーマを作成し、文字列連結を使用して必要なデータ定義文を作成します。

関連する問題