【发布时间】:2016-06-21 14:55:12
【问题描述】:
我需要修改一个表来移除主键约束,唯一的问题是这个表是由另一个系统生成的,我没有约束名。因此,作为一种解决方法,我创建了以下脚本,我认为它应该可以工作,但事实并非如此,所以任何人都可以帮我编写另一个可以工作的脚本。
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;
/
【问题讨论】:
-
这个脚本有什么问题?它给出错误吗?这将有助于找到答案。