首页 > 其他分享 >触发器

触发器

时间:2022-11-08 23:13:41浏览次数:35  
标签:info 触发器 -- money trans card

1、MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,
当触发器所在表上出现指定事件时,将调用该对象,
即表的操作事件触发表上的触发器的执行。

2、创建一个执行语句的触发器

create trigger 触发器名 before|after 触发事件
on 表名
for each row 执行语句;

before和after参数指定触发器执行的时间;

触发事件包括insert、update和delete;

for each row表示任何一条记录上的操作满足触发条件都会触发触发器;

执行语句指触发器被触发后执行的程序

create table card_info
(
card_id int primary key ,
uname varchar(20),
money double
);

create table trans_info
(
id int primary key auto_increment,
card_id int,
trans_type varchar(20),
trans_money double
);

insert into card_info values(1001,'张三',10000);
insert into card_info values(1002,'李四',20000);
insert into card_info values(1003,'王五',30000);

select * from card_info;

select * from trans_info;

insert into trans_info values(null,1001,'存款',1000);

update card_info set money=money+1000 where card_id=1001;

-- after insert 触发器 在交易记录表中添加一条交易记录 则更新我们的用户的余额
-- new 存放 触发这个触发器的 那条新增的记录
create trigger trig1
after INSERT
on trans_info
for each row
BEGIN
if new.trans_type='存款' then
update card_info set money=money+new.trans_money where card_id=new.card_id;
elseif new.trans_type='取款' THEN
update card_info set money=money-new.trans_money where card_id=new.card_id;
end if;
end;

-- 触发这个触发器
insert into trans_info values(null,1002,'取款',2000);

select * from card_info;

select * from trans_info;


-- after update
create table card_log
(
id int primary key auto_increment,
before_uname varchar(20),
after_uname varchar(20),
update_date timestamp default now()
)

-- 更新了用户名后 将更新前后的用户名存入日志表中
-- new 存放的是更新后的记录
-- old 存放的是更新前的记录
create trigger trig2
after UPDATE
on card_info
for each ROW
BEGIN
insert into card_log values(null,old.uname,new.uname,default);
end;

-- 触发
update card_info set uname='张小三' where card_id=1001


select * from card_info;

select * from card_log;

-- 将trans_info 中删除的记录存入日志表(自己创建)
-- old表

 

标签:info,触发器,--,money,trans,card
From: https://www.cnblogs.com/daimenglaoshi/p/16871604.html

相关文章

  • Sql Server获取所有表的触发器
    Sql语句:select t.name 表名,tr.name 触发器名称 from (select * from sysobjects where xtype='U') t inner join (select * from sysobjects where x......
  • JK触发器与模12计数器
    JK触发器JK触发器具有保持,置0,置1和翻转四个功能。则可得出次态方程:\(Q_{n+1}=JQ_n'+K'Q_n\)Design`timescale1ns/1psmodulejk(clk,Reset,Set,J,K,Q);inputc......
  • SQL触发器和视图的使用
    相关题目:......
  • 【模数电路】施密特触发器(Schmitt Trigger)
     原视频:https://www.bilibili.com/video/BV1JG411j7BU/?vd_source=414837aa4622e81bd8d12b67784d6714相关链接:【施密特触发器定义及原理详解】https://www.sunev.cn/har......
  • 表同步更新的问题的触发器
      1sql server 2000 触发器,表同步更新的问题   2有三个表,A ,B,C  3A、B表中含有: A1,B1,C1 三个字段,  4C 表中存放A、B表中的A1、B1......
  • 创建MySQL触发器,对当前表某个字段值,进行修改
    需求:后台处理完数据,进行插入数据库时,某个字段,存的数值要保留两位小数(没改之前小数可能7,8位)在不改变程序的前提下,需要把小数进行四舍五入。思路:在Mysql创建一个触发器,......
  • MYSQL-->触发器
    介绍触发器是与表有关的数据项,指在insert/update/delete之前或之后,出发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日......
  • SQL高级(事务和触发器)
     事务四大属性   1,原子性:事务是一个完整的整体,要么都执行,要么都不执行   2,一致性:当事务完成时,数据必须处于一致状态   3,隔离性:对数据修改的所有并......
  • SQLServer第十章:触发器 trigger
    触发器:一种特殊的存储过程,特殊在它不能手动进行调用,只能通过操作自动去触发完成一些复杂的约束(是普通约束做不到的)操作类型分类: insert触发器:由insert插入......
  • mongo 初探触发器
    前言mongo作为出名的nosql数据库,随着版本的迭代,被越来越多的开发者所接受,DB-EnginesRanking-popularityrankingofdatabasemanagementsystems而我们今......