2014-10-27 82 views
3

我想在這裏提出一個非常基本的問題。 我們在創建表格或創建表格後可能/不可以命名約束。 假設我選擇不命名外鍵約束。刪除沒有名字的外鍵Oracle

該表沒有記錄。

我可以在不命名的情況下刪除外鍵名稱嗎?

我知道如何讓外鍵的名稱,然後使用它像

alter table my_table drop constraint fk_name; 

刪除,但我想刪除/刪除外鍵約束就不能不提它的名字。

有沒有辦法做到這一點?

回答

7

但我想刪除/刪除外鍵約束而不提及它的名稱。

這是不可能的。刪除外鍵約束需要一個名稱。然而,你可以找出系統生成的名稱:

select constraint_name 
from user_constraints 
where table_name = 'MY_TABLE' 
    and constraint_type = 'R'; 

會告訴你在桌子上MY_TABLE定義的所有外鍵。使用這種說法,你甚至可以生成必要的DDL語句:

select 'alter table "'||table_name||'" drop constraint "'||constraint_name||'";' 
from user_constraints 
where table_name = 'MY_TABLE' 
    and constraint_type = 'R'; 

保存的是選擇到一個文件的輸出,你必須使用statement(s),以從該表中刪除所有外鍵。