我想从两个数据库中删除约束,并且由于这些约束具有不同的名称,我想通过选定的列删除它们。有可能吗?
例如:
CAR
包含ID, NAME, ENGINE
列NAME, ENGINE
db1
约束上调用constraint1122
,在db2
上调用aaconstraint
答案 0 :(得分:1)
使用此:
DECLARE
l_constraint_name varchar2(100);
l_table_name varchar2(100);
l_sql varchar2(2000);
BEGIN
select uc.constraint_name, uc.table_name
INTO l_constraint_name, l_table_name
from user_constraints uc
, user_cons_columns cc1
, user_cons_columns cc2
where constraint_type = 'U'
and cc1.constraint_name = uc.constraint_name
and cc2.constraint_name = uc.constraint_name
and cc1.column_name = 'NAME'
and cc2.column_name = 'ENGINE'
and uc.table_name = 'CAR'
;
DBMS_OUTPUT.put_line('alter table '|| l_table_name ||' drop constraint ' || l_constraint_name);
execute immediate 'alter table '|| l_table_name ||' drop constraint ' || l_constraint_name;
end;
您必须为每个数据库运行两次,一次。确保您使用的是CAR
表