外部キーを削除する必要があるデータベースがありますが、外部キーが存在するかどうかは事前にわかりません。外部キーを検索するクエリ
トリックを行うストアドプロシージャ(http://forums.mysql.com/read.php?97,218825,247526)が見つかりましたが、このためにストアドプロシージャを作成したくありません。
私は、ストアドプロシージャでIF EXISTS
を使用することができます...私は、ストアドプロシージャ内のクエリを使用しようとしましたが、私は(等...などFROM NULL SELECT存在する場合は、」使用してエラーが出ますか?
今、私は実行することができる唯一のことは、
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';
であると私は
あまりにもこれを試してみましたIF EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_NAME = parm_key_name) THEN
(...) do something (...)
END IF;
が、私は単純なクエリとのフォーラムでの例について見てきたと私はこれが機能しない理由を理解することはできませんYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF' at line 1
を取得します。
注:編集あなたは情報のスキームに接続する必要が壊れたリンク
クエリはどのように見えますか? –
具体的には、「外部キーを削除する」とはどういう意味ですか? – gview
@ gview ALTER TABLE 'テーブル'のように何か外のキーを押します。 –