繁体   English   中英

如何使用select语句作为约束名称在Oracle中禁用约束

[英]How to disable a constraint in Oracle with select statement as constraint name

我尝试禁用附加到表中列的约束

ALTER TABLE
   ADV_TEST_COURSE_CREDIT
DISABLE constraint

name = (SELECT 
    constraint_name
from
    user_constraints natural join 
    user_cons_columns
where 
    table_name = 'ADV_TEST_COURSE_CREDIT' AND 
    column_name = 'SEQUENCE_NUMBER' AND
    constraint_type = 'C');

我尝试上面的陈述。 它不起作用。 关于如何使其工作的任何想法。

ADV_TEST_COURSE_CREDIT存在于dev,UAT,Production中,因此约束名称不同,但所有约束都附加在称为SEQUENCE_NUMBER的列上

您需要动态sql和一些plsql:

declare name varchar2(200);
begin
SELECT 
    constraint_name
into name
from
    user_constraints natural join 
    user_cons_columns
where 
    table_name = 'ADV_TEST_COURSE_CREDIT' AND 
    column_name = 'SEQUENCE_NUMBER' AND
    constraint_type = 'C');
execute immediate 'ALTER TABLE  ADV_TEST_COURSE_CREDIT DISABLE CONSTRAINT :1' using name;
end;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM