ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 完善昨天写的数据库结构同步方案

完善昨天写的数据库结构同步方案

原创 Linux操作系统 作者:space6212 时间:2019-03-07 21:00:04 0 删除 编辑

在昨天的方案中,并没有实现对由系统自动生成约束名的约束的修改和删除的同步。

考虑到这种情况的同步较为复杂,决定通过before触发器防止SYS_XXXX之类对象的创建

触发器代码如下:


在昨天的方案中,并没有实现对由系统自动生成约束名的约束的修改和删除的同步。

考虑到这种情况的同步较为复杂,决定通过before触发器防止SYS_XXXX之类对象的创建

触发器代码如下:

--建立用户DDL BEFORE触发器,防止用户创建对象名称为SYS_XXXX之类的对象
--因为一般情况下SYS_XXXX的对象是由系统自动生成的对象,如没有命名的主键索引等,这些会引起数据库结构同步的不一致性
Create Or Replace Trigger tri_ddl_before Before ddl
ON suk.Schema
DECLARE
sql_text ora_name_list_t;
state_sql Varchar2(4000);
BEGIN
FOR i IN 1..ora_sql_txt(sql_text) LOOP
state_sql := state_sql||sql_text(i);
END LOOP;
dbms_output.put_line(state_sql);
dbms_output.put_line(instr(upper(state_sql),'SYS_'));
if ora_sysevent = 'CREATE' And instr(upper(state_sql),'SYS_')>0 then
raise_application_error(-20001, 'can not create/alter object use name like ''SYS_XXXXXX''');
End If;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Null;
END tr_ddl_before;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63698/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2005-01-25

  • 博文量
    245
  • 访问量
    210072