增加、删除、更新触发器

简介: 第一步:新建触发器表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;
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
sqlite3自动插入创建时间和更新时间
在本文中,作者分享了如何使用sqlite3数据库来记录结构化日志,并实现主键ID自增、插入数据时自动填充创建时间(created_at)以及更新数据时更新时间(updated_at)的功能。首先,创建数据库和表`position_info`,然后通过修改表结构使ID字段为自动递增。接着,设置`created_at`和`updated_at`字段默认值为当前时间。最后,创建一个触发器在数据更新时自动更新`updated_at`。完整SQL代码包括表创建和触发器定义。
250 0
|
5月前
|
运维 JavaScript Serverless
函数计算产品使用问题之如何删除一个已设置的触发器
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
关系型数据库 MySQL 测试技术
当update修改数据与原数据相同时会再次执行吗
当update修改数据与原数据相同时会再次执行吗
52 1
|
Web App开发 缓存 iOS开发
CleanMyMacX4.12.2有哪些新的功能更新
任何一部电子设备在使用多年之后都会出现性能下降的问题,苹果的Mac计算机自然也不例外。当你发现Mac运行缓慢,因为有太多文件或缓存垃圾将Mac的运行速度拖了下来。 要想提高生活和工作效率,必须对Mac进行优化,提升一下Mac 的使用性能。那么以下三种提升Mac使用性能的方法对你的帮助将会是巨大的。
125 0
|
缓存 索引
ES的删除和更新,旧数据到低是如何处理的?
根据ES的读写入原理,大家都知道ES写入时每秒从内存缓冲区(memory buffer)生成小的segment,将其递交给系统缓存(OS filesystem cache)中,后台会定期的对这些小的segment 合并成一个大的segment段
398 0
ES的删除和更新,旧数据到低是如何处理的?
|
OLTP 数据库
数据的删除与修改
数据的删除与修改
197 0
|
关系型数据库 MySQL
有数据进行更新 没有进行新增 怎么操作
有数据进行更新 没有进行新增
305 0