增加、删除、更新触发器

简介: 第一步:新建触发器表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月前
|
SQL 关系型数据库 MySQL
sqlite3自动插入创建时间和更新时间
在本文中,作者分享了如何使用sqlite3数据库来记录结构化日志,并实现主键ID自增、插入数据时自动填充创建时间(created_at)以及更新数据时更新时间(updated_at)的功能。首先,创建数据库和表`position_info`,然后通过修改表结构使ID字段为自动递增。接着,设置`created_at`和`updated_at`字段默认值为当前时间。最后,创建一个触发器在数据更新时自动更新`updated_at`。完整SQL代码包括表创建和触发器定义。
|
20天前
|
运维 JavaScript Serverless
函数计算产品使用问题之如何删除一个已设置的触发器
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 算法 JavaScript
xijs更新指南(v1.2.1)
xijs更新指南(v1.2.1)
56 2
|
8月前
|
编译器 应用服务中间件 数据库连接
解决C#运行程序修改数据后数据表不做更新的问题
解决C#运行程序修改数据后数据表不做更新的问题
75 0
|
10月前
|
前端开发 开发者
【raETable】🎉🎉🎉大更新!大更新!绝对大更新!
【raETable】🎉🎉🎉大更新!大更新!绝对大更新!
|
11月前
|
BI 数据处理 开发工具
【批量创建,删除工作表】
【批量创建,删除工作表】
|
11月前
|
Swift
LTScrollView更新啦~
LTScrollView更新啦~
69 0
|
SQL
使用tkmapper更新某一列
使用tkmapper更新某一列
144 0
|
关系型数据库 MySQL
有数据进行更新 没有进行新增 怎么操作
有数据进行更新 没有进行新增
289 0