Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题

摘要:
tr_ sync_ BD_ MARBASCLASS*描述:ITF_ CRUD,ITF_ COUNT,新。AVGPRICE:新。PK_ GROUP:新。PK_ORG,新。PK=父项:MC.PK_ MARBASCLASSASPARENT_PK:MC.NAMEASPARENT _ NAME--父项PK:TO_ CHAR(sysdate,

// 触发器

create or replace trigger tr_sync_BD_MARBASCLASS
after INSERT or UPDATE
on BD_MARBASCLASS for each row
declare v_cnt integer;
PRAGMA AUTONOMOUS_TRANSACTION;   -- 自治事务
begin
    /**
     * Name : tr_sync_BD_MARBASCLASS
     * Desc : 物料分类 增量同步 触发器
     * Author : wuyf  11222337@qq.com
     * Date : 2014-09-10
     */

 
     case
       when inserting then
            insert into BD_MARBASCLASS_SYNC (AVERAGECOST,    AVERAGEMMAHEAD,    AVERAGEPURAHEAD,    AVGPRICE,    CODE,    CREATIONTIME,    CREATOR,    DATAORIGINFLAG,    DEF1,    DEF10,    DEF2,    DEF3,    DEF4,    DEF5,    DEF6,    DEF7,    DEF8,    DEF9,    DR,    ENABLESTATE,    INNERCODE,    MODIFIEDTIME,    MODIFIER,    NAME,    NAME2,    NAME3,    NAME4,    NAME5,    NAME6,    PK_GROUP,    PK_MARASSTFRAME,    PK_MARBASCLASS,    PK_ORG,    PK_PARENT,    TS
                   ,    PARENT_PK,    PARENT_CODE,    PARENT_NAME
                   ,ITF_CREATE_DATE ,ITF_CRUD,ITF_ISSYNC,ITF_MSG,ITF_SYNC_DATE,ITF_COUNT,ITF_PK)
            SELECT :new.AVERAGECOST,    :new.AVERAGEMMAHEAD,    :new.AVERAGEPURAHEAD,    :new.AVGPRICE,    :new.CODE,    :new.CREATIONTIME,    :new.CREATOR,    :new.DATAORIGINFLAG,    :new.DEF1,    :new.DEF10,    :new.DEF2,    :new.DEF3,    :new.DEF4,    :new.DEF5,    :new.DEF6,    :new.DEF7,    :new.DEF8,    :new.DEF9,    :new.DR,    :new.ENABLESTATE,    :new.INNERCODE,    :new.MODIFIEDTIME,    :new.MODIFIER,    :new.NAME,    :new.NAME2,    :new.NAME3,    :new.NAME4,    :new.NAME5,    :new.NAME6,    :new.PK_GROUP,    :new.PK_MARASSTFRAME,    :new.PK_MARBASCLASS,    :new.PK_ORG,    :new.PK_PARENT,    :new.TS
                   ,    MC.PK_MARBASCLASS AS PARENT_PK,    MC.CODE AS PARENT_CODE,    MC.NAME AS PARENT_NAME          -- 父级 PK,编码,名称
                   ,TO_CHAR( sysdate,'yyyy-MM-dd hh:mm:ss'),'C',0,'',null,0,CAST( sys_guid() AS NVARCHAR2(36))
                   FROM (
                        SELECT :new.PK_PARENT AS PK_PARENT 
                               FROM DUAL
                   ) T
                   LEFT JOIN BD_MARBASCLASS MC     -- 物料分类(父级)
                        ON T.PK_PARENT = MC.PK_MARBASCLASS
                   ;
       else 
            insert into BD_MARBASCLASS_SYNC (AVERAGECOST,    AVERAGEMMAHEAD,    AVERAGEPURAHEAD,    AVGPRICE,    CODE,    CREATIONTIME,    CREATOR,    DATAORIGINFLAG,    DEF1,    DEF10,    DEF2,    DEF3,    DEF4,    DEF5,    DEF6,    DEF7,    DEF8,    DEF9,    DR,    ENABLESTATE,    INNERCODE,    MODIFIEDTIME,    MODIFIER,    NAME,    NAME2,    NAME3,    NAME4,    NAME5,    NAME6,    PK_GROUP,    PK_MARASSTFRAME,    PK_MARBASCLASS,    PK_ORG,    PK_PARENT,    TS
                   ,    PARENT_PK,    PARENT_CODE,    PARENT_NAME
                   ,ITF_CREATE_DATE ,ITF_CRUD,ITF_ISSYNC,ITF_MSG,ITF_SYNC_DATE,ITF_COUNT,ITF_PK)
            SELECT :new.AVERAGECOST,    :new.AVERAGEMMAHEAD,    :new.AVERAGEPURAHEAD,    :new.AVGPRICE,    :new.CODE,    :new.CREATIONTIME,    :new.CREATOR,    :new.DATAORIGINFLAG,    :new.DEF1,    :new.DEF10,    :new.DEF2,    :new.DEF3,    :new.DEF4,    :new.DEF5,    :new.DEF6,    :new.DEF7,    :new.DEF8,    :new.DEF9,    :new.DR,    :new.ENABLESTATE,    :new.INNERCODE,    :new.MODIFIEDTIME,    :new.MODIFIER,    :new.NAME,    :new.NAME2,    :new.NAME3,    :new.NAME4,    :new.NAME5,    :new.NAME6,    :new.PK_GROUP,    :new.PK_MARASSTFRAME,    :new.PK_MARBASCLASS,    :new.PK_ORG,    :new.PK_PARENT,    :new.TS
                   ,    MC.PK_MARBASCLASS AS PARENT_PK,    MC.CODE AS PARENT_CODE,    MC.NAME AS PARENT_NAME          -- 父级 PK,编码,名称
                   ,TO_CHAR( sysdate,'yyyy-MM-dd hh:mm:ss'),'U',0,'',null ,0,CAST( sys_guid() AS NVARCHAR2(36))
                   FROM (
                        SELECT :new.PK_PARENT AS PK_PARENT 
                               FROM DUAL
                   ) T
                   LEFT JOIN BD_MARBASCLASS MC     -- 物料分类(父级)
                        ON T.PK_PARENT = MC.PK_MARBASCLASS
                   ;
     end case;
     
     commit;  -- 记得 提交 事务
end;

// 创建临时 同步 中间状态 表 表结构

--判断表是否存在,如果存在则删除
declare 
      num   number; 
begin 
      select count(1) into num from all_tables where TABLE_NAME = 'BD_MARBASCLASS_SYNC' and OWNER='NC'; 
      if   num=1   then 
          execute immediate 'drop table BD_MARBASCLASS_SYNC'; 
      end   if; 
end; 

/
/** * Name : BD_MARBASCLASS_SYNC * Desc : 物料分类 同步表 * Author : wuyf 11222337@qq.com * Date : 2014-09-10 */ create table BD_MARBASCLASS_SYNC as select t.* , CAST(NULL AS nvarchar2(19)) AS ITF_CREATE_DATE -- 同步记录创建时间 , CAST('' AS NVARCHAR2(30)) AS ITF_CRUD -- 同步类型 : C:新增,U:更新,D:删除,R:读(一般没有) , 0 AS ITF_ISSYNC -- 是否已同步: 0:未同步或同步失败, 1:已同步成功 , CAST('' AS NVARCHAR2(2000)) AS ITF_MSG -- 同步消息: , CAST(NULL AS nvarchar2(19)) AS ITF_SYNC_DATE -- 最后同步时间 , 0 AS ITF_COUNT -- 同步次数 ,CAST( sys_guid() AS NVARCHAR2(36)) AS ITF_PK -- 同步主键 from ( SELECT MC.* ,nvl(MCP.PK_MARBASCLASS,'') AS PARENT_PK -- 父分类PK ,nvl(MCP.CODE,'') AS PARENT_CODE -- 父分类编码 ,nvl(MCP.NAME,'') AS PARENT_NAME -- 父分类名称 FROM BD_MARBASCLASS MC LEFT JOIN BD_MARBASCLASS MCP ON MC.PK_PARENT = MCP.PK_MARBASCLASS ) t where 1=0;

免责声明:文章转载自《Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇宏的二次展开iperf/iperf3网络测试工具的安装与使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlmap参数详解

Options(选项) -h, --help 查看帮助,没什么好说的 -hh 查看全部的帮助 --version 查看版本 -v 显示信息的级别,一共有六级:0:只显示python 错误和一些严重信息;1:显示基本信息(默认);2:显示debug信息;3:显示注入过程的payload;4:显示http请求包;5:显示http响应头;7:显示http相应页面...

Ubuntu 安装 Courier New字体和雅黑consolas字体

一直觉得Ubuntu下的字体不是很好,但毕竟不影响使用,然后作开发的时候eclipse的字体完全没有windows下的两大适合编成的字体courier new 和consloas 。可以使用系统安装字体,然后在eclipse下使用系统的字体即可。 1、安装Courier New sudo apt-get install ttf-mscorefonts-in...

视图家族之视图工具集viewsets

视图家族之视图工具集viewsets 一、视图集ViewSet 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据 destory() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是通过重...

MySQL事务隔离级别

 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提...

备份与还原mysql 数据库的常用命令。

一、备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 -P: 端口号,不写默认3306 --all-databases, -A:备份所有数据库 --databases, -B: 用于备份多个数据库,如果没有该选项...

Confluence5.6.6安装和破解

  1.安装confluence 1. 软件环境说明 # 安装 jdk [root@wiki_5-6-6 jar]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@wiki_5-6-6 jar]# systemctl status firewalld.servic...