テーブルから外部キーを削除したいが、その識別子がわからない。外部キーの削除(CONSTNAME)
SYSCAT.KEYCOLUSE表からIDを取得します。
その後、私はその識別子を使用してFKを削除しようとします。
識別子
SELECT keycoluse.CONSTNAME FROM SYSCAT.KEYCOLUSE keycoluse WHERE TABSCHEMA = 'USER1' AND TABNAME = 'TABLE1' AND COLNAME = 'ID_TABLE'
結果を取得= ID000000001
ドロップFK
ALTER TABLE TABLE1
DROP FOREIGN KEY (SELECT keycoluse.CONSTNAME FROM SYSCAT.KEYCOLUSE keycoluse WHERE TABSCHEMA = 'USER1' AND TABNAME = 'TABLE1' AND COLNAME = 'ID_TABLE');
このスローエラー:[エラーコード:-104、SQL状態:42601]
しかし、このように前に取得した識別子を使用すると、それは動作します:
0123このように、それは動作しませんALTER TABLE TABLE1
DROP FOREIGN KEY ID000000001;
:
ALTER TABLE TABLE1
DROP FOREIGN KEY 'ID000000001';
私はIDを取得するためにSELECTを実行すると、それはvarchar型「ID000000001」を取得し、それがエラーになります。
¿このコマンドで使用しているのと同じ型にSELECTの結果をキャストする方法はありますか?
ALTER TABLE TABLE1
DROP FOREIGN KEY ID000000001;
と私はスクリプトのこれらの種類を使用すると、一般的に適切なアプローチであることを言及する価値があると思いますが、より大きな変更を加えるとき。それらを使用することからあまりにも甘やかされるべきではありません。 – gregory
ありがとう、それは私のために働いた。 – Onefra