Mysql中的触发器定义与使用
作者:菜到极致就是渣 发布时间:2024-01-26 10:37:45
标签:MySQL,触发器
一、触发器的介绍
触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行
触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的
完整性,日志记录,数据校验等操作。
使用别名old和new来引用触发器中发生变化的记录内容,这与其它的数据库是相似的。
现在触发器还只支持行级触发,不支持语句级触发。
触发器类型 new和old
insert型触发器 new表示将要挥着已经新增的数据
update型触发器 old表示修改之前的数据,new表示将要或者已经修改后的数据
delete型触发器 old表示将要或者已经删除的数据
二、触发器的语法
语法:
1:创建触发器语句
create trigger 触发器名称 before/after insert/update/delete on 表名 for each row
begin
sql语句
end;
这里的after和before表示的是增删改之后还是之前触发的
2:查看触发器语句
show triggers;
3:删除触发器
drop trigger 数据库名.触发器的名字;(如果没有指定数据库的名字,那么默认是当前数据库)
(1)insert触发器
create table user_logs(
opera_text varchar(1000) comment '插入的·内容',
opera_time datetime comment '插入的时间',
opera varchar(20) comment '操作的类型,insert/delete/update'
);
create trigger tb_user_insert_tigger
after insert on sp for each row
begin
insert into user_logs(opera_text, opera_time, opera)
values(concat('插入的名字=',new.name,',插入的年龄=',new.age),now(),'insert');
end;
show triggers;
insert into sp(age, name) values (100,'大魔王');
(2)update触发器
create trigger tb_user_update_trigger
after update on sp for each row
begin
insert into user_logs(opera_text, opera_time, opera) values
(concat('更新前的名字=',old.name,' 更新前的年龄=',old.age,' 更新后的名字=',new.name,' 更新后的年龄=',new.age),now(),'update');
end;
show triggers;
update sp set age=1000 where name='李四';
(3)delete触发器
create trigger tb_user_delete_trigger
after delete on sp for each row
begin
insert into user_logs(opera_text, opera_time, opera)
values(concat('删除的名字=',old.name,' 删除前的年龄=',old.age),now(),'delete');
end;
show triggers;
delete from sp where name='李四';
来源:https://blog.csdn.net/gaoqiandr/article/details/128088975


猜你喜欢
- 前言mitmproxy 是 man-in-the-middle proxy 的简称,译为中间人代理工具,可以用来拦截、修改、保存 HTTP/
- 前言众所周知vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的。相对来
- 最近有个小需求,校验IMEI是否为15位纯数字(是否合法)以下是正则匹配与自己实现的简单验证方式进行压测package mainimport
- 以下笔记是我在 xue.cn 学习群之数据分析小组所整理分享的心得。相关背景是:我选择中文词频统计案例作为考察大家python基础功掌握程度
- vue的面包屑导航组件 用来将其放到navbar中;Breadcrumb/index.vue<template> &
- /* 小弟刚刚接触ORACLE存储过程,有一个问题向各位同行求教,小弟写了一个存储过程,其目的是接收一个参数作为表名,然后查询该表中的全部记
- 阅读上一篇:W3C优质网页小贴士(三)明智地选择 URI没有什么比走到你最喜欢的商店门口,却发现店门紧闭,而且没有看见店面搬迁告示这种事情还
- 本文实例讲述了Python strip()函数的正则表达式实现方法。分享给大家供大家参考,具体如下:题目如下:写一个函数,它接受一个字符串,
- 时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的S
- 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)?一、引入在学习了Python特殊字符和原始字符串之
- Div的浮动+循环(描述的不清楚,请看图)在设计和布局的时候,碰到图片循环问题,碰到间距问题,怎么样让循环的图片每行的起始点跟上边的titl
- 本文实例为大家分享了JavaScript实现点击自制菜单效果的具体代码,供大家参考,具体内容如下应用场景:当我们希望用户再点击右键的时候不希
- 注:MySQL5.7破解root密码,跳过密码认证登录到数据库,直接修改表中的密码即可,但是MySQL 8.0则不可以这样修改root密码,
- 实例如下:function unescape($str) { $str = rawurldecode($str);
- 今天下载了一个msde2000A,本想按照平时的安装习惯,找到了setup.exe安装程序,错误提示弹出一个对话框:“为了安全起见,要求使用
- 学习目标根据原型设计编译自动化数据生成器,熟悉wxPython的基本用法。界面原型设计界面原型设计分析输入参数:最大长度最小长度组成规则多少
- 学习前言最近在学目标检测……SSD的源码好复杂……看
- 家里没网络,实在无聊,玩游戏都没味道,只好玩CSS。这个东西实在没什么技术含量在里面,纯属打发时间。简单说明:一张图片放在底层,
- 1、问题现象:2、解决办法:editor的字体设置为DialogInput补充知识:Python +Selenium 支持多项目集中配置文件
- 首先,我们了解下什么是数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止