SQL触发器之常用语句(总结)


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家总结了一些SQL触发器常用语句,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

一、创建一个简单的触发器

1

2

3

4

5

CREATE TRIGGER 触发器名称

ON 表名

FOR INSERTUPDATE DELETE

AS

    T-SQL 语句

注意:触发器名称是不加引号的。

二、删除触发器

1

drop trigger 触发器名称

删除多个触发器:

1

drop trigger 触发器名称,触发器名称

三、重命名触发器

用查询分析器重命名

1

exec sp_rename 原名称, 新名称

sp_rename 是 SQL Server 自带的一个存储过程,用于更改当前数据库中用户创建的对象的名称,如表名、列表、索引名等。

四、INSERT、UPDATE 或 DELETE

INSTEAD OF

执行触发器语句,但不执行触发触发器的 SQL 语句,比如试图删除一条记录时,将执行触发器指定的语句,此时不再执行 delete 语句。例:

1

2

3

4

5

create trigger f

on tbl

instead of delete

as

    insert into Logs...

IF UPDATE(列名)

检查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:

1

2

3

4

5

6

create trigger f

on tbl

for update

as

    if update(status) or update(title)

        sql_statement --更新了 status 或 title 列

inserted、deleted

这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。例:

1

2

3

4

5

6

7

create trigger tbl_delete

on tbl

for delete

as

    declare @title varchar(200)

    select @title=title from deleted

    insert into Logs(logContent) values('删除了 title 为:' + title + '的记录')

说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text、image 的字段值时,所取得的值将会是 null。

五、查看数据库中所有的触发器

1

2

3

4

use 数据库名

go

select * from sysobjects where xtype='TR'

sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记录即为触发器对象。在 name 一列,我们可以看到触发器名称。

六、sp_helptext 查看触发器内容

1

2

3

use 数据库名

go

exec sp_helptext '触发器名称'

七、sp_helptrigger 用于查看触发器的属性

阅读剩余部分

相关阅读 >>

mybatis动态sql标签的用法详解

sql语句修改数据

mysql的select 学习笔记

存储过程解密(破解函数,过程,触发器,视图.仅限于sqlserver2000)

mysql优化之如何写出高质量sql语句

sql点滴24 监测表的变化

java+sqlserver实现学生信息管理系统

mysql 百万级数据的4种查询优化方式

mybatis详解动态sql以及单表多表查询的应用

sqlmap 注射工具中文使用用法

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...