增加、删除、更新触发器

简介: 第一步:新建触发器表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;
目录
相关文章
|
2月前
|
存储 算法 JavaScript
xijs更新指南(v1.2.1)
xijs更新指南(v1.2.1)
28 2
|
4月前
|
编译器 应用服务中间件 数据库连接
解决C#运行程序修改数据后数据表不做更新的问题
解决C#运行程序修改数据后数据表不做更新的问题
44 0
|
6月前
|
前端开发 开发者
【raETable】🎉🎉🎉大更新!大更新!绝对大更新!
【raETable】🎉🎉🎉大更新!大更新!绝对大更新!
|
7月前
|
BI 数据处理 开发工具
【批量创建,删除工作表】
【批量创建,删除工作表】
|
7月前
|
Swift
LTScrollView更新啦~
LTScrollView更新啦~
43 0
|
OLTP 数据库
数据的删除与修改
数据的删除与修改
160 0
|
关系型数据库 MySQL
MySQL基础-删除/更新行为
添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:
156 0
|
关系型数据库 MySQL
有数据进行更新 没有进行新增 怎么操作
有数据进行更新 没有进行新增
273 0
|
Java 数据库 缓存
JPA更新后查询结果还是更新前的
此时数据库数据状态如下 执行如下流程代码 执行update语句,更新状态字段 语句执行完毕,然而看看数据库 hibernate执行更新需要较长时间,因此需要等待,否则无法获得更新后字段 JPA更新一条记录,数据库查看更新成功,但是紧接着查询,发现还是更新前的结果,怀疑缓存问题但是网上查了下没解决成功。
2029 0
|
安全 数据库 NoSQL
创建 更新和删除文档
插入并保存文档 插入数据可以使用insert方法向目标集合插入一个文档。 db.foo.insert({"bar" : "baz"}) 批量插入 批量插入使用batchInsert函数实现批量插入,它与insert函数非常像,只是它接受的是一个文档数组作为参数。
964 0

热门文章

最新文章