用mysql触发器实现log记录
首先建立两张测试用表
mysql> desc pay;
+-------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| money | decimal(,) | NO | | NULL | |
| op | char() | YES | | NULL | |
+-------+---------------+------+-----+---------+----------------+
rows in set (0.00 sec) mysql> desc log;
+-------------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------+------+-----+-------------------+-----------------------------+
| id | int() | NO | PRI | NULL | auto_increment |
| op | char() | YES | | NULL | |
| oid | int() | NO | | NULL | |
| last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+-----------+------+-----+-------------------+-----------------------------+
rows in set (0.00 sec)
创建一个触发器
mysql> delimiter $$
mysql> create trigger pay_log after insert on pay for each row begin insert into log set oid=new.id, op=new.op; end;$$
mysql> delimiter ;
参看触发器是否创建成功
mysql> show triggers\G;
*************************** . row ***************************
Trigger: pay_log
Event: INSERT
Table: pay
Statement: begin insert into log set oid=new.id, op=new.op; end
Timing: AFTER
Created: NULL
sql_mode:
Definer: root@localhost
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: utf8_general_ci
row in set (0.00 sec) ERROR:
No query specified
测试
mysql> insert into pay set money=,op='jimmy';
mysql> select * from pay;
+----+--------+-------+
| id | money | op |
+----+--------+-------+
| | 123.00 | jimmy |
| | 123.00 | jimmy |
+----+--------+-------+
rows in set (0.00 sec) mysql> select * from log;
+----+-------+-----+---------------------+
| id | op | oid | last_update |
+----+-------+-----+---------------------+
| | jimmy | | -- :: |
| | jimmy | | -- :: |
+----+-------+-----+---------------------+
rows in set (0.00 sec)
同理还可以再创建一个update和delete的触发器
题外话
创建触发器的时候发现没有权限,启动参数加上--skip-grant-table解决
用mysql触发器实现log记录的更多相关文章
- Mysql 触发器 A表记录到B表
1:查询出需要的列名 备用 #列名 select COLUMN_NAME from information_schema.columns where TABLE_SCHEMA='yunpiaobox_ ...
- MySql 触发器同步备份数据表记录
添加记录到新记录表 DELIMITER $$ USE `DB_Test`$$ CREATE /*!50017 DEFINER = 'root'@'%' */ TRIGGER `InsertOPM_Al ...
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- mysql触发器trigger 实例详解
mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html) MySQL好像从5.0.2版本就开始支持触发器的功能 ...
- MySQL触发器如何正确使用
MySQL触发器如何正确使用 2010-05-18 15:58 佚名 博客园 字号:T | T 我们今天主要向大家介绍的是MySQL触发器进行正确使用,其中包括对MySQL触发器发器的语句创建,触发时 ...
- 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- Mysql slow query log
一.概念部分: 顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录 ...
- navicat MySQL 只有1000条记录
/*************************************************************************** * navicat MySQL 只有1000条 ...
- mysql触发器的作用及语法
触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有下面的作用: 1.安全性.能够基于数据库的值使用户具有 ...
随机推荐
- zookeeper入门讲解事例
zookeeper使用和原理探究(一) zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<Th ...
- iOS 更改webView文字颜色丶文字大小丶背景色的方法
在webView的delegate回调方法 - (void)webViewDidFinishLoad:(UIWebView *)webView;中写上一下语句即可 //字体大小 [webView ...
- 【代码笔记】iOS-拍照动画
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. se ...
- 【代码笔记】iOS-根据size截取屏幕中间矩形区域
代码: RootViewController.m #import "RootViewController.h" @interface RootViewController () @ ...
- 窗口activity
android:theme="@style/FloatActivity" E:\day9\mobilesafe\res\values\style
- AFNetworking简单用法
GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:ni ...
- 在Window 下安装Redis数据库
小Alan国庆后就要回深圳找工作了,最近在复习工作所需的相关的技术,今天刚好复习到redis,redis是一个非关系型(NoSql)数据库,采用key-value的方式存储数据,她可以保存字符串(St ...
- ORACLE 查看有多个执行计划的SQL语句
在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...
- Servlet/JSP-02 Servlet相关类
ServletConfig / ServletContext / ServletRequest / ServletResponse 一. ServletConfig:封装了Servlet得配置信息,并 ...
- SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等
)-- 表名 set @table_name='bqcform101' --============表结构 select 类别,表名or字段名,描述,字段类型,是否自增,允许为NULL,默认值 fro ...