0
我需要修改一个表来删除主键约束,唯一的问题是表是由另一个系统生成的,而我没有约束名。所以作为一种解决方法,我创建了下面的脚本,我认为它应该可以工作,但它不是,所以任何人都可以帮助我编写另一个可以工作的脚本。在oracle中根据选择条件改变表脚本
ALTER TABLE temp
MODIFY CONSTRAINT (select constraint_name
FROM all_constraints
WHERE owner like '%tempUser%' and
table_name like '%temp%' and
constraint_type = 'P'
)
DISABLE;
我在试图运行时遇到以下错误。
SQL错误:ORA-14006:无效的分区名称 14006. 00000 - “无效的分区名称” *原因:格式的分区名称是 预期,但不存在。 *操作:输入适当的分区名称。
我尝试了下面的代码基于建议的链接,它运行没有任何错误,但它并没有消除约束。
BEGIN
FOR c IN
(SELECT c.owner, c.table_name, c.constraint_name
FROM all_constraints c
where owner like '%tempUser%' and table_name like '%temp%' and constraint_type = 'P')
LOOP
dbms_utility.exec_ddl_statement('alter table ' || c.table_name || ' modify CONSTRAINT ' || c.constraint_name || ' disable ');
END LOOP;
END;
/
什么不是从这个脚本工作?它是否给出错误?这将有助于找到答案。 – Steven
[在Oracle中禁用所有表约束]的可能重复(http://stackoverflow.com/questions/128623/disable-all-table-constraints-in-oracle) – mustaccio