达梦(禁用|启动)constraint

    技术2022-08-01  72


    ### 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;
    Processed: 0.013, SQL: 9