达梦删除表空间的内部执行过程
drop tablespace test1执行后达梦内部会通过一系列的函数来检查和执行
--测试
select sessid;
create tablespace test2 datafile 't2.dbf' size 128;
alter session set events '10002 trace name context forever';
drop tablespace TEST2;
alter session set events '10002 trace name context off';
show parameter trace_path

会输出到trc文件中,根据session id命名。

输出结果
*** Start trace 10002 event [SESSION ID:140159164097160] ***
[DDL SQL]:
drop tablespace TEST2;[EQUIVALENT DML SQL]:
{SF_LOCK_APPLY_ID();
{
{INT V_DC_FLAG_LEVEL;INT ISO_LEVEL = -1;
try{V_DC_FLAG_LEVEL = SF_RESET_DDLCOMMIT_FLAG();{COMMIT;SF_SETDDL();SF_LOCK_DICT(1056964608, 1, 0);SF_LOCK_TABLESPACE_ORG(7, 4, 0);SF_LOCK_DICT(1056964608, 1, 0);SF_LOCK_DICT(1056964608, 4, 0);SF_LOCK_TABLESPACE_ORG(7, 4, 0);SF_LOCK_DICT(905969664, 4, 0);SF_LOCK_TABLESPACE_ORG(7, 2, 0);long countuc = 0;long countc = 0;ISO_LEVEL = SF_SET_TRX_ISO_LEVEL(0);select count(*) into countuc from sys.sysindexes where groupid = 7;SF_SET_TRX_ISO_LEVEL(1);select count(*) into countc from sys.sysindexes where groupid = 7;SF_SET_TRX_ISO_LEVEL(ISO_LEVEL);ISO_LEVEL = -1;if (countuc + countc > 0)SF_DROP_TS(-1);else{SF_DROP_TS(7);}SF_LOCK_APPLY_ID();SP_DCT_TAB_DDL_REG(7, 0, 0);COMMIT;
}SP_RESTORE_DDLCOMMIT_FLAG(V_DC_FLAG_LEVEL);}
catch (exception ex){SP_RESTORE_DDLCOMMIT_FLAG(V_DC_FLAG_LEVEL);SF_SET_GEN_INS_UREC_FLAG(1);if (ISO_LEVEL != -1)SF_SET_TRX_ISO_LEVEL(ISO_LEVEL);throw;
}
}SF_LOCK_APPLY_ID();COMMIT;
}}-------------------------- END --------------------------
具体涉及哪些内部表?
