zoukankan      html  css  js  c++  java
  • Mysql之 触发器(一种特殊模式)

    分类:

    1. 数据库级触发器
    2. 表级触发器
    3. 行级触发器
    4. 增删改触发器(根据触发时机)

    场景1:解除外键约束

    一般来说,插表先插主表,删表先删从表(见:https://www.cnblogs.com/sabertobih/p/13966709.html

    外键约束的创建限制:

    >>>

    如何用触发器实现:插表和删表没有外键的先后限制?

    ------------------------
    drop table if exists userinfos;
    drop table if exists uss;
    create table userinfos(userid int primary key,uname varchar(20));
    create table uss(userid int primary key,uname varchar(20));
    insert into userinfos values('1','zs');
    insert into userinfos values('2','df');
    insert into userinfos values('3','hh');
    
    insert into uss values('1','11');
    insert into uss values('2','22');
    insert into uss values('3','33');
    alter table userinfos add constraint CONSTRAINT_D 
    foreign key (userid) references uss(userid);
    ---------------------
    ## 删表可以先主表了
    create trigger trg2 before delete 
    on uss for each row
    delete from userinfos where userid=old.userid
    ## 插表可以先从表了
    create trigger trg3 before insert 
    on userinfos for each row
    insert into uss values(new.userid,new.uname);

    场景2:实现对表的监控

    基于触发器的CDC:原始数据表+insert触发器,可以在另外一张表中记录对原表的增删改查操作

    事件机制

    影响性能:因为数据库中直接多了一张表!所以很少使用此方法

    其他监控方式:https://www.cnblogs.com/sabertobih/p/14031034.html

  • 相关阅读:
    每日一题_191208
    每日一题_191207
    每日一题_191206
    每日一题_191205
    每日一题_191204
    每日一题_191203
    每日一题_191202
    每日一题_191201
    每日一题_191130
    2020届成都一诊理科16题
  • 原文地址:https://www.cnblogs.com/sabertobih/p/14031014.html
Copyright © 2011-2022 走看看