私は制約名を知らなかったので、制約を削除する次のクエリを持っています。テーブル名と列名を指定してselectクエリから取得しています。oracleのalter文でselect queryを使用することはできますか?
ALTER TABLE <CHILD_TABLE_NAME>
DROP CONSTRAINT in (SELECT
CONS.CONSTRAINT_NAME
FROM USER_CONSTRAINTS CONS
LEFT JOIN USER_CONS_COLUMNS COLS ON COLS.CONSTRAINT_NAME = CONS.CONSTRAINT_NAME
LEFT JOIN USER_CONSTRAINTS CONS_R ON CONS_R.CONSTRAINT_NAME = CONS.R_CONSTRAINT_NAME
LEFT JOIN USER_CONS_COLUMNS COLS_R ON COLS_R.CONSTRAINT_NAME = CONS.R_CONSTRAINT_NAME
WHERE CONS.CONSTRAINT_TYPE = 'R'
AND COLS.COLUMN_NAME='<COLUMN_NAME>'
AND CONS.TABLE_NAME = '<CHILD_TABLE_NAME>')
私はあなたが「ALTER TABLE」がコマンドが持っているかどうかを確認するための「Oracle Database SQL言語リファレンス」をチェックアウトする必要があり、PL/SQL開発者
ORA-02250:missing or invalid constraint name
次の2つのステップでそれを行う必要があるでしょう。最初に制約名を見つけてから、制約を削除します。 – jarlh
このようにすることはできません。 ***動的SQL ***でこれを行う必要があります。 'EXECUTE IMMEDIATE'ステートメントの例を探します。 –