### Code Reference
- URL:p133 DM8系統管理員手冊
- DESC:達夢(禁用|啓動)constraint(和oracle的語法有些差異)
- Last Update:2020-7-2 15:54
- 四種狀態
- disable novalidate 既不會約束新增數據也不會驗證已有數據,等同於disable
- enable novalidate 約束新增數據但不會驗證已有數據
- disable validate 約束新增數據但不會驗證已有數據,啓用後禁止DML
- enable 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;
- 接口(pi_mode 爲0是置check constraint 爲disable,其他爲置爲enable)