2014-10-27 84 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),以从该表中删除所有外键。