【SQL 触发器】

一.MySQL上触发器的使用

示例:

1 CREATE TRIGGER trigger_name
2 trigger_time
3 trigger_event ON tbl_name
4 FOR EACH ROW
5 trigger_stmt

trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。

由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。

另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。

trigger_event 详解
MySQL 除了对 INSERT、UPDATE、DELETE 基本操作进行定义外,还定义了 LOAD DATA 和 REPLACE 语句,这两种语句也能引起上述6中类型的触发器的触发。

LOAD DATA 语句用于将一个文件装入到一个数据表中,相当与一系列的 INSERT 操作。

REPLACE 语句一般来说和 INSERT 语句很像,只是在表中有 primary key 或 unique 索引时,如果插入的数据和原来 primary key 或 unique 索引一致时,会先删除原来的数据,然后增加一条新数据,也就是说,一条 REPLACE 语句有时候等价于一条。

INSERT 语句,有时候等价于一条 DELETE 语句加上一条 INSERT 语句。

INSERT 型触发器:插入某一行时激活触发器,可能通过 INSERT、LOAD DATA、REPLACE 语句触发;
UPDATE 型触发器:更改某一行时激活触发器,可能通过 UPDATE 语句触发;
DELETE 型触发器:删除某一行时激活触发器,可能通过 DELETE、REPLACE 语句触发。

实际使用:

 1 /*
 2 触发器-- 在给firsttable插入一条数据的同时 给secondtable插入相同的数据
 3 */
 4 CREATE TRIGGER cfq_insert_one
 5 AFTER
 6 INSERT
 7 ON firsttable FOR EACH ROW
 8 INSERT INTO secondtable SET firstname =  new.firstName;/*new.firstName  就是新增加的数据*/
 9 /*展示  目标表上的触发器*/
10 SHOW TRIGGERS LIKE ‘firsttable‘;
11
12 INSERT INTO firsttable VALUES (‘李思‘);

如果,如果你打算执行多个语句,可使用BEGIN ... END复合语句结构。

示例如下:

1 CREATE TRIGGER testref BEFORE INSERT ON test1
2   FOR EACH ROW BEGIN
3     INSERT INTO test2 SET a2 = NEW.a1;
4     DELETE FROM test3 WHERE a3 = NEW.a1;
5     UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
6   END

时间: 2024-10-27 08:56:28

【SQL 触发器】的相关文章

SQL触发器实例(下)

1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发器要执行的操作语句. 7 Go 8 9 注意: 10 触发器中不允许以下 Transact-SQL 语句: 11 Alter DATABASE ,Create DATABASE,DISK INIT, 12 DISK RESIZE, Drop DATABASE, LOAD DATABASE, 13 L

SQL触发器学习

? 简介 触发器是一种特殊类型的存储过程.触发器分为: DML( 数据操纵语言 Data Manipulation Language)触发器:数据库中表或视图的数据更改时触发,包括insert,update,delete语句 DDL(数据定义语言 Data Definition Language)触发器:表或索引中的create.alter.drop语句. 登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发. ? 优劣 可以强制执行业务规则: Microsoft SQL Serve

SQL触发器实例讲解

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.       常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 我为什么要使用触发器?比如,这么两个表: Create Table Student(              --学生表         StudentID int primary key,       --学号         ....        )

SQL 触发器-如何查看当前数据库中有哪些触发器

在查询分析器中运行: use 数据库名goselect * from sysobjects where xtype='TR' sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记录即为触发器对象.在 name 一列,我们可以看到触发器名称. SQL 触发器-创建一个简单的触发器 SQL 触发器-重命名触发器 SQL 触发器-删除触发器 SQL 触发器-触发器更多语法 SQL 触发器-如何查看某个触发器的内容 SQL 触发器-多个触发器 SQL 触发器-递归.嵌套触发器 SQ

创建SQL触发器

我们可以对某个数据表添加SQL触发器,当该表进行添加.更新.删除时执行某项操作.不过SQL触发器如果能不用尽量不用,若在项目后期改动程序波及范围太大,使用SQL触发器可以避免,所以才使用. 数据表dbo.User(UserName, Password) CREATE TRIGGER Trigger_User ON dbo.User FOR UPDATE, DELETE AS IF UPDATE(UserName) BEGIN DECLARE @userNameBeforeUpdate NVARC

【牛腩视频】之SQL触发器

之前在学习机房管理系统.net版的时候,已经写过了关于数据库的操作,但是现在开始学习牛腩,才发现之前自己理解的太浅显,很多东西看似好像会了,不去实际操作一下,不把代码从头到尾敲出来,到头来还是不会,所以,这篇文章就是总结如何从头到尾,创建一个sql触发器的教程.以下均以sql2008r2为例: 第一步:创建触发器 找到自己要创建触发器的表-触发器-新建触发器. 第二步:填写所需要信息 点击新建触发器以后,就会出现数据库为我们创建的一些初始化的代码,如下: 我们需要写的地方就是从CREATE TR

PB+MS SQL+触发器必须注意

PB+MS SQL+触发器必须注意: 若触发器存在两笔以上的返回值,比如两条update 语句,被误判为数据有改变,存盘不成功. 提示: Row changed between retrieve and update. No changes made to database. 所以MS SQL 触发器必须统一处理为: 触发器开始加: [email protected]@ROWCOUNT=0 Return --提高效能 setnocount on --不返回统计笔数,可减少网络频繁响应,提高效性能

SQL触发器中的deleted表和inserted表

SQL触发器中的deleted表和inserted表 在触发器语句中用两个特殊的表一个是deleted表和inserted.它们是通过触发器操作自动创建驻留在内存中的临时表. 描述: Deleted表用于存储 DELETE和 UPDATE语句所影响的行的复本.在执行DELETE或 UPDATE语句时,行从触发器表中删除,并传输到 deleted表中.Deleted表和触发器表通常没有相同的行. Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本.在一个插入或更新事

PB+MS SQL+触发器必须指出

PB+MS SQL+触发器必须指出: 若触发器存在两笔以上的返回值,比方两条update 语句,被误判为数据有改变.存盘不成功. 提示: Row changed between retrieve and update. No changes made to database. 所以MS SQL 触发器必须统一处理为: 触发器開始加: [email protected]@ROWCOUNT=0 Return --提高效能 setnocount on --不返回统计笔数,可降低网络频繁响应,提高效性能

SQL 触发器

触发器: 触发器为特殊类型的存储过程,可在执行语言事件时自动生效.SQL Server 包括三种常规类型的触发器:DML 触发器.DDL 触发器和登录触发器. 当服务器或数据库中发生数据定义语言 (DDL) 事件时将调用 DDL 触发器.登录触发器将为响应 LOGON 事件而激发存储过程.与 SQL Server 实例建立用户会话时将引发此事件. 当数据库中发生数据操作语言 (DML) 事件时将调用 DML 触发器.DML 事件包括在指定表或视图中修改数据的 INSERT 语句.UPDATE 语