### Code Reference
URL:p133 DM8系统管理员手册DESC:达梦(禁用|启动)constraint(和oracle的语法有些差异)Last Update:2020-7-2 15:54
四种状态
disable novalidate 既不会约束新增数据也不会验证已有数据,等同于disableenable novalidate 约束新增数据但不会验证已有数据disable validate 约束新增数据但不会验证已有数据,启用后禁止DMLenable validate 约束新增数据并验证已有数据,等同于enable 设置 constraint 状态
select * from SYS.DBA_CONSTRAINTS T where T.TABLE_NAME = 'WhichCanEncrypt';
alter table test."WhichCanEncrypt" enable|disable constraint "CK_6_1";
### Code Reference
DESC:dameng 修改check constraint 状态过程Last Update:2020-7-2 16:56
接口(pi_mode 为0是置check constraint 为disable,其他为置为enable) call “TEST”.“disposeCheckConstraint”(‘TEST’,‘WhichCanEncrypt’,1);授权 grant execute on test.“disposeCheckConstraint” to PUBLIC; grant select on SYS.DBA_CONSTRAINTS to public;实现
create or replace procedure test."disposeCheckConstraint"("pv_schemaName" varchar2(100),
"pv_tableName" varchar2(100),
"pi_mode" number(1)) as
declare type L_cursortyp is ref cursor;
L_cursor L_cursortyp;
Lv_sql varchar2(200);
Lv_disposeMode varchar2(200):=0;
begin
if "pi_mode" = 0 then
Lv_disposeMode := '" DISABLE CONSTRAINT "';
else
Lv_disposeMode := '" ENABLE CONSTRAINT "';
end if;
open L_cursor for
select 'ALTER TABLE "' || "OWNER" || '"."' || "TABLE_NAME" ||
Lv_disposeMode || "CONSTRAINT_NAME" || '"'
from SYS.DBA_CONSTRAINTS T
where 1 = 1
and T.OWNER = "pv_schemaName"
and T.TABLE_NAME = "pv_tableName"
and T.CONSTRAINT_TYPE = 'C';
loop
fetch L_cursor
into Lv_sql;
exit when L_cursor%notfound;
begin
execute IMMEDIATE Lv_sql;
print Lv_sql;
exception
when others then
null;
end;
end loop;
close L_cursor;
end;
转载请注明原文地址:https://ipadbbs.8miu.com/read-31251.html