今天有空研究了一下触发器。废话少说,开始正题
关于触发器的名词解释:
1,trigger 触发器英文名称,表示在向数据库改变数据时自动触发的一段mysql数据库程序,这段程序就成为触发器,
2,new关键词:表示向数据库改变数据时添加或修改的新数据的引用关键词,如果不明白待会儿实例将会让你明白。
3,ole关键词:和new刚好相反。
4,事件以及对应需要用到的关键字
5,
insert 事件用 new
delete 事件用 old
update 事件用new 和old
6,查看触发器 show triggers status/G
7, 删除触发器:drop trigger 触发器名称
实例:功能--向客户表中插入一条数据时自动向客户登陆记录表中插入一条记录数据。
客户表sql:
drop table if exists customer;
mysql> create table customer(
-> id int primary key auto_increment,
-> name varchar(6),
-> password varchar(6))
-> charset=utf8;
客户登陆记录表sql;
CREATE TABLE `customerloginlog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`logindate` date DEFAULT NULL,
`username` varchar(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
创建触发器:当向客户表中插入一条记录时自动向客户登陆表中插入一条记录,该条记录记录登陆的
时间和客户的名称。
create trigger userloginlog
after INSERT on customer for each row
insert into customerloginlog(logindate,username) values(now(),new.name);/*注意new的用法
new的说明:
因为该出发器是用在向数据库中插入数据时出发的,所以相对于数据库表customer来说是新数据,所欲
要引用新记录中的字段name就要用new.name.
创建触发器:当向客户表中删除一条记录中就在用户注销表中插入一条记录,该条记录记录注销客户的时间和客户的名称。
create trigger userloginoutlog
after DELETE on customer for each row
insert into customerloginout(loginoutdate,username) values(now(),old.name);/*注意old的用法
old说明:
因为该触发器是发生在表中记录删除时出发的,所有相对于表来说,删除的数据就是就数据,所以要引用
删除的数据记录就需要old.name用法。
create trigger trigger1 BEFORE insert on customer for each row
begin
insert into customerloginlog(logindate,username) values(now(),new.name);
end
相关推荐
过程、触发器、视图、信息架构视图”,这老是用介户绍而写的。简单的来说介绍了“存储 MySQL 5.0 为示希较了望大达这到的本实这书用样能的像目例内,的行,在专我学家会习那从之样每前与一也您个许进细大行节家对开...
内含mysql的trigger触发器实例,修改即可使用。。。。。。
本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...
mysql数据库触发器相关触发器(TRIGGER)是MySQL的数据库对象之一,是一种特殊类型的存储过程,从5.0版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序call调用,...
触发器是数据库的一个程序,他是用来监听着数据表的某个行为,一旦数据表的这个行为发生了,马上执行相应的sql语句 触发器的语法结构: create trigger 触发器的名称触发器事件 on 监听的表名 for each row 行为...
本文实例讲述了MYSQL设置触发器权限的方法,针对权限错误的情况非常实用。具体分析如下: mysql导入数据提示没有SUPER Privilege权限处理,如下所示: ERROR 1419 (HY000): You do not have the SUPER Privilege ...
本文实例讲述了mysql触发器之触发器的增删改查操作。分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: /...
本文实例讲述了MySQL触发器基本用法。分享给大家供大家参考,具体如下: 一、MySQL触发器创建: 1、MySQL触发器的创建语法: CREATE [DEFINER = { 'user' | CURRENT_USER }] TRIGGER trigger_name trigger_...
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: 代码如下...
主要介绍了mysql触发器(Trigger)简明总结和使用实例,需要的朋友可以参考下
CREATE TRIGGER 触发器名称 –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFORE | AFTER } –触发器有执行的时间设置:可以设置为事件发生前或后。 { ...
CREATE TRIGGER sell_update BEFORE UPDATE ON Sell FOR EACH ROW BEGIN IF NEW.订购册数 UPDATE Book SET 折扣=1 WHERE 图书编号=NEW.图书编号; ELSE UPDATE Book SET 折扣=0.8 WHERE 图书编号=NEW.图书编号; END ...
mysql通过触发器实现两个表的同步 目前,在本地测试成功。 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新。 代码: DELIMITER $...
MySQL 触发器简单实例 语法 CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFORE | AFTER } –触发器有执行的时间设置:...
其中trigger_name标识触发器名称,用户自行指定; trigger_time标识触发时机,用before和after替换; trigger_event标识触发事件,用insert,update和delete替换; tbl_name标识建立触发器的表名,即在哪张表上建立...
DROP TRIGGER IF EXISTS sys_menu_edit; CREATE TRIGGER sys_menu_edit BEFORE UPDATE ON sys_menu FOR EACH ROW BEGIN INSERT INTO `g4m`.`sys_log` ( `table_name`, `val_id`, `data_json` ) VALUES ( 'sys_menu',...
MySQL触发器语法详解: 触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由...
本文实例讲述了mysql 触发器创建与使用方法。分享给大家供大家参考,具体如下: 什么是触发器 触发器用来在某些操作之后/之前,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改学生数)...
MySQL通过触发器解决数据库中表的行数限制详解及实例 最近项目一个需求是对操作日志的数量限制为10万条,超过十万条便删除最旧的那一条,保存数据库中日志数量不超过10万。 当时我的第一想法是通过触发器来做,便在...
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器 代码如下:mysql> CREATE TRIGGER trig1 AFTER INSERT -> ON work FOR EACH ROW -> INSERT INTO time VALUES(NOW());Query OK,