增加、删除、更新触发器

简介: 第一步:新建触发器表SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS `dataex_trigger_record`;CREATE TABLE `dataex_trig...

第一步:新建触发器表

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `dataex_trigger_record`;
CREATE TABLE `dataex_trigger_record` (
  `ROWGUID` varchar(50) NOT NULL,
  `TABLENAME` varchar(50) DEFAULT NULL,
  `COLUMNNAME` varchar(50) DEFAULT NULL,
  `COLUMNVALUE` varchar(100) NOT NULL,
  `INSERTDATE` date DEFAULT NULL,
  `OPERATETYPE` varchar(10) DEFAULT NULL,
  `SYNC_DATE` date DEFAULT NULL,
  `SYNC_SIGN` varchar(10) DEFAULT NULL,
  `SYNC_ERROR_DESC` varchar(1000) DEFAULT NULL,
  PRIMARY KEY (`ROWGUID`)
) ;

第二步:新建触发器

– sqlserver

CREATE TRIGGER E_DATA_FROM_A ON data_from FOR INSERT AS
BEGIN
    INSERT INTO DATAEX_TRIGGER_RECORD (
        ROWGUID,
        TABLENAME,
        COLUMNNAME,
        Columnvalue,
        INSERTDATE,
        Operatetype
    )(
        SELECT
            newid (),
            'data_from',
            'id',
            id,
            getdate (),
            'I'
        FROM
            inserted
    );


END;
CREATE TRIGGER E_DATA_FROM_U ON data_from FOR UPDATE AS
BEGIN
INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)(
    SELECT
        newid (),
        'data_from',
        'id',
        id,
        getdate (),
        'U'
    FROM
        inserted
);


END;
CREATE TRIGGER E_DATA_FROM_D ON data_from FOR DELETE AS
BEGIN
INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)(
    SELECT
        newid (),
        'data_from',
        'id',
        id,
        getdate (),
        'D'
    FROM
        deleted
);


END;

– mysql/oracle

CREATE TRIGGER E_DATA_FROM_A AFTER INSERT ON data_from FOR EACH ROW
BEGIN
    INSERT INTO DATAEX_TRIGGER_RECORD (
        ROWGUID,
        TABLENAME,
        COLUMNNAME,
        Columnvalue,
        INSERTDATE,
        Operatetype
    )
VALUES
    (
        UUID(),
        'data_from',
        'id',
        new.id,
        SYSDATE(),
        'I'
    );


END;
CREATE TRIGGER E_DATA_FROM_U AFTER UPDATE ON data_from FOR EACH ROW
BEGIN
INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)
VALUES
    (
        UUID(),
        'data_from',
        'id',
        new.id,
        SYSDATE(),
        'U'
    );


END;
CREATE TRIGGER E_DATA_FROM_D AFTER DELETE ON data_from FOR EACH ROW
BEGIN

INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)
VALUES
    (
        UUID(),
        'data_from',
        'id',
        old.id,
        SYSDATE(),
        'D'
    );


END;

–mysql针对具体的表

CREATE TRIGGER E_T_RK_BASEINFO_161W_A AFTER INSERT ON t_rk_baseinfo_161w FOR EACH ROW
BEGIN
    INSERT INTO DATAEX_TRIGGER_RECORD (
        ROWGUID,
        TABLENAME,
        COLUMNNAME,
        Columnvalue,
        INSERTDATE,
        Operatetype
    )
VALUES
    (
        UUID(),
        't_rk_baseinfo_161w',
        'ROW_ID',
        new.ROW_ID,
        SYSDATE(),
        'I'
    );


END;
CREATE TRIGGER E_T_RK_BASEINFO_161W_U AFTER UPDATE ON t_rk_baseinfo_161w FOR EACH ROW
BEGIN
INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)
VALUES
    (
        UUID(),
        't_rk_baseinfo_161w',
        'ROW_ID',
        new.ROW_ID,
        SYSDATE(),
        'U'
    );


END;
CREATE TRIGGER E_T_RK_BASEINFO_161W_D AFTER DELETE ON t_rk_baseinfo_161w FOR EACH ROW
BEGIN

INSERT INTO DATAEX_TRIGGER_RECORD (
    ROWGUID,
    TABLENAME,
    COLUMNNAME,
    Columnvalue,
    INSERTDATE,
    Operatetype
)
VALUES
    (
        UUID(),
        't_rk_baseinfo_161w',
        'ROW_ID ',
        old.ROW_ID,
        SYSDATE(),
        'D'
    );


END;
目录
相关文章
|
5月前
|
编译器 应用服务中间件 数据库连接
解决C#运行程序修改数据后数据表不做更新的问题
解决C#运行程序修改数据后数据表不做更新的问题
45 0
|
8月前
|
BI 数据处理 开发工具
【批量创建,删除工作表】
【批量创建,删除工作表】
|
Web App开发 缓存 iOS开发
CleanMyMacX4.12.2有哪些新的功能更新
任何一部电子设备在使用多年之后都会出现性能下降的问题,苹果的Mac计算机自然也不例外。当你发现Mac运行缓慢,因为有太多文件或缓存垃圾将Mac的运行速度拖了下来。 要想提高生活和工作效率,必须对Mac进行优化,提升一下Mac 的使用性能。那么以下三种提升Mac使用性能的方法对你的帮助将会是巨大的。
102 0
|
OLTP 数据库
数据的删除与修改
数据的删除与修改
160 0
|
关系型数据库 MySQL
MySQL基础-删除/更新行为
添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:
166 0
|
缓存 索引
ES的删除和更新,旧数据到低是如何处理的?
根据ES的读写入原理,大家都知道ES写入时每秒从内存缓冲区(memory buffer)生成小的segment,将其递交给系统缓存(OS filesystem cache)中,后台会定期的对这些小的segment 合并成一个大的segment段
260 0
ES的删除和更新,旧数据到低是如何处理的?
|
关系型数据库 MySQL
有数据进行更新 没有进行新增 怎么操作
有数据进行更新 没有进行新增
276 0
|
Java 数据库 缓存
JPA更新后查询结果还是更新前的
此时数据库数据状态如下 执行如下流程代码 执行update语句,更新状态字段 语句执行完毕,然而看看数据库 hibernate执行更新需要较长时间,因此需要等待,否则无法获得更新后字段 JPA更新一条记录,数据库查看更新成功,但是紧接着查询,发现还是更新前的结果,怀疑缓存问题但是网上查了下没解决成功。
2033 0