{$Wap} | 网站首页 | 电脑资料库 | wap资源库 | 建站资源库 | 茂名合租网 | 下载中心 | 美图资源库 | 茂名资源网商城 | 
广告载入中...
〒 您现在的位置: 茂名资源网 >> 建站资源库 >> 数据库 >> 建站资源库正文
DB2 9数据库中有关同步trigger的记录 【字体:
作者:佚名    建站资源库来源:不详    点击数:    更新时间:2007-5-11
广告载入中...

项目需要写了几个数据库同步用的 trigger ,就是记录用户的操作到一个 temp 表,然后每天通过webservice 同步到其它系统,同步成功清空该 temp 表。自认为写的还行,做个记录。是 db2 的。











-- 用户组新增触发器 

--DROP TRIGGER TG_USERG; 



CREATE TRIGGER LIBING.TG_USERG AFTER INSERT ON LIBING.TM_USERG 

REFERENCING NEW AS NROW 

FOR EACH ROW 

MODE DB2SQL   

BEGIN ATOMIC 



declare @groupId integer; 

declare @name varchar(30); 

declare @descn varchar(100); 

declare @syntype varchar(4); 

declare @ddlsql varchar(1024); 

declare @isprimary char(1); 

declare @updateTime timestamp; 

declare @createTime timestamp; 

declare @createBy integer; 

declare @updateBy integer; 

declare @groupType integer; 

declare @adminType integer; 

declare @appId integer; 

declare @oldGroupId integer; 



set @groupId=NROW.GROUP_ID; 

set @name=NROW.name; 

set @descn=NROW.descn; 

set @syntype=NROW.syn_type; 

set @ddlsql=NROW.ddlsql; 

set @isprimary=NROW.isprimary; 

set @updateTime=NROW.update_time; 

set @createTime=NROW.create_time; 

set @createBy=NROW.create_by; 

set @updateBy=NROW.update_by; 

set @groupType=NROW.group_type; 

set @adminType=NROW.admin_type; 

set @appId=NROW.app_id; 



INSERT INTO TM_USERG_TEMP(GROUP_ID,NAME,DESCN,DDLSQL,ISPRIMARY,UPDATE_TIME,CREATE_TIME, 

CREATE_BY,UPDATE_BY,GROUP_TYPE,ADMIN_TYPE,APP_ID,ACTION) VALUES (@groupId,@name,@descn,

@ddlsql,@isprimary,@updateTime,@createTime,@createBy,@updateBy,@groupType,@adminType,@appId,'INSERT'); 



END; 



-- 更新用户组数据的触发器 

- DROP TRIGGER TG_USERG_UPDATE; 

CREATE TRIGGER TG_USERG_UPDATE AFTER UPDATE ON TM_USERG 

REFERENCING NEW AS NROW 

FOR EACH ROW 

MODE DB2SQL 

BEGIN ATOMIC 

declare @groupId integer; 

declare @name varchar(30); 

declare @descn varchar(100); 

declare @syntype varchar(4); 

declare @ddlsql varchar(1024); 

declare @isprimary char(1); 

declare @updateTime timestamp; 

declare @createTime timestamp; 

declare @createBy integer; 

declare @updateBy integer; 

declare @groupType integer; 

declare @adminType integer; 

declare @appId integer; 



set @groupId=NROW.GROUP_ID; 

set @name=NROW.name; 

set @descn=NROW.descn; 

set @syntype=NROW.syn_type; 

set @ddlsql=NROW.ddlsql; 

set @isprimary=NROW.isprimary; 

set @updateTime=NROW.update_time; 

set @createTime=NROW.create_time; 

set @createBy=NROW.create_by; 

set @updateBy=NROW.update_by; 

set @groupType=NROW.group_type; 

set @adminType=NROW.admin_type; 

set @appId=NROW.app_id; 



-- 如果已经有 update 则只记录最后一条 update 

IF EXISTS(SELECT GROUP_ID FROM TM_USERG_TEMP WHERE GROUP_ID=@groupId AND ACTION='UPDATE') THEN UPDATE 

TM_USERG_TEMP SET GROUP_ID=@groupId, 

NAME=@name,DESCN=@descn,DDLSQL=@ddlsql, 

ISPRIMARY=@isprimary,UPDATE_TIME=@updateTime, 

CREATE_TIME=@createTime,CREATE_BY=@createBy, 

UPDATE_BY=@updateBy,GROUP_TYPE=@groupType, 

ADMIN_TYPE=@adminType,APP_ID=@appId,ACTION='UPDATE' 

where GROUP_ID=@groupId AND ACTION='UPDATE'; 

-- 如果有 insert 则把后面的 update 当作 insert 

 ELSEIF  EXISTS(SELECT GROUP_ID FROM TM_USERG_TEMP WHERE GROUP_ID=@groupId AND ACTION='INSERT') THEN 

UPDATE TM_USERG_TEMP SET GROUP_ID=@groupId, 

NAME=@name,DESCN=@descn,DDLSQL=@ddlsql, 

ISPRIMARY=@isprimary,UPDATE_TIME=@updateTime, 

CREATE_TIME=@createTime,CREATE_BY=@createBy, 

UPDATE_BY=@updateBy,GROUP_TYPE=@groupType, 

ADMIN_TYPE=@adminType,APP_ID=@appId,ACTION='INSERT' 

where GROUP_ID=@groupId AND ACTION='INSERT'; 

ELSE      INSERT INTO TM_USERG_TEMP(GROUP_ID,NAME,DESCN,DDLSQL,ISPRIMARY,UPDATE_TIME,CREATE_TIME, 

CREATE_BY,UPDATE_BY,GROUP_TYPE,ADMIN_TYPE,APP_ID,ACTION) VALUES (@groupId,@name,@descn, 

@ddlsql,@isprimary,@updateTime,@createTime,@createBy,@updateBy,@groupType,@adminType,@appId,'UPDATE'); 

 end if; 

END;           

-- 删除用户组触发器

--DROP TRIGGER TG_USERG_DELETE;

CREATE TRIGGER TG_USERG_DELETE AFTER DELETE ON TM_USERG 

REFERENCING OLD AS OROW 

FOR EACH ROW 

MODE DB2SQL 

BEGIN ATOMIC 



declare @groupId integer; 

declare @name varchar(30); 

declare @descn varchar(100); 

declare @syntype varchar(4); 

declare @ddlsql varchar(1024); 

declare @isprimary char(1); 

declare @updateTime timestamp; 

declare @createTime timestamp; 

declare @createBy integer; 

declare @updateBy integer; 

declare @groupType integer; 

declare @adminType integer; 

declare @appId integer; 



set @groupId=OROW.GROUP_ID; 

set @name=OROW.name; 

set @descn=OROW.descn; 

set @syntype=OROW.syn_type; 

set @ddlsql=OROW.ddlsql; 

set @isprimary=OROW.isprimary; 

set @updateTime=OROW.update_time; 

set @createTime=OROW.create_time; 

set @createBy=OROW.create_by; 

set @updateBy=OROW.update_by; 

set @groupType=OROW.group_type; 

set @adminType=OROW.admin_type; 

set @appId=OROW.app_id; 



 -- 如果没有操作记录,则插入 delete 记录 

IF NOT EXISTS(SELECT GROUP_ID FROM TM_USERG_TEMP WHERE GROUP_ID=@groupId) THEN 

INSERT INTO TM_USERG_TEMP(GROUP_ID,NAME,DESCN,DDLSQL,ISPRIMARY,UPDATE_TIME,CREATE_TIME, 

CREATE_BY,UPDATE_BY,GROUP_TYPE,ADMIN_TYPE,APP_ID,ACTION) VALUES (@groupId,@name,@descn, 

@ddlsql,@isprimary,@updateTime,@createTime,@createBy,@updateBy,@groupType,@adminType,@appId,'DELETE'); 

-- 如果有 insert 记录,则整体结果相当于没有进行任何操作 

ELSEIF EXISTS(SELECT GROUP_ID FROM TM_USERG_TEMP WHERE GROUP_ID=@groupId and ACTION='INSERT') THEN 

DELETE FROM TM_USERG_TEMP WHERE GROUP_ID=@groupId and ACTION='INSERT'; 

-- 如果没有 insert 记录,则只需记录最后的 delete 操作 

ELSE 

UPDATE TM_USERG_TEMP set ACTION='DELETE' where GROUP_ID=@groupId; 

END IF; 

END;

(T114)

收藏此页到:[天极网摘]  [和讯网摘]  [新浪VIVI]  [365key]  [博采中心]  [网摘中国]  [5Seek]  [狐摘 ]  [365Fav]  [热门 ]  [人人网摘]  [我摘]  [YouNote]
广告载入中...

注明
☉本站所有软件和资料大多来自互联网收集整理,仅供学习和研究使用。如有侵犯您版权的,请来信指出,本站将立即改正。
邮址:diyb208%21cn.com请将%换成@
☉下载的压缩包如需要密码的,密码统一为:www.0668idc.com
☉茂名资源网不承担用户因使用这些下载资源和技术教程对自己和他人造成任何形式的损失或伤害。
☉资源下载请使用[FlashGet]下载,否则可能出现下载不了的情况;解压缩请使用[Winrar]。

  • 上一个建站资源库:

  • 下一个建站资源库:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

    相关建站资源库 推荐文章 热门文章

  • PB/Sybase系统开发中的数据库…

  • 值得大家一看:有关DB2的FAQ…

  • DB2中几种遇到的SQL1032N出错…

  • 教你使用SQL查询DB2 9中的XM…

  • DB2高可用性灾难恢复(HADR)…

  • DB2数据库的数据复制技术简单…

  • DB2 for z/OS Web 应用程序死…

  • 史上最伟大12款软件排名 DB2…

  • DB2 LOAD命令中COPY NO/COPY…

  • SQL Sever中有关DATALENGTH的…

  •  PB/Sybase系统开发中的数据库转移…
     值得大家一看:有关DB2的FAQ小锦…
     DB2中几种遇到的SQL1032N出错的解…
     教你使用SQL查询DB2 9中的XML数据…
     DB2高可用性灾难恢复(HADR)的限…
     DB2数据库的数据复制技术简单概述…
     DB2 for z/OS Web 应用程序死锁分…
     史上最伟大12款软件排名 DB2名列…
     DB2 9数据库中有关同步trigger的…
     DB2 LOAD命令中COPY NO/COPY的说…

     

     PB/Sybase系统开发中的数据库转移…
     值得大家一看:有关DB2的FAQ小锦…
     DB2中几种遇到的SQL1032N出错的解…
     教你使用SQL查询DB2 9中的XML数据…
     DB2高可用性灾难恢复(HADR)的限…
     DB2数据库的数据复制技术简单概述…
     DB2 for z/OS Web 应用程序死锁分…
     史上最伟大12款软件排名 DB2名列…
     DB2 9数据库中有关同步trigger的…
     DB2 LOAD命令中COPY NO/COPY的说…

     

    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:落叶有声
    管理员通信方式:信箱地址:diyb208@21cn.com QQ:84805309