0
我有以下查詢將刪除約束,因爲我不知道約束名稱,我通過指定表名和列名從選擇查詢中獲取它。有沒有可能在oracle的alter語句中使用select查詢?
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>')
當我捉迷藏上面的查詢,提示以下錯誤:在PL/SQL開發
ORA-02250:missing or invalid constraint name
你必須做的兩個步驟。首先找到約束名稱,然後刪除約束。 – jarlh
這不能這樣做。你必須用***動態SQL ***來做到這一點;查找「EXECUTE IMMEDIATE」語句示例。 –