文章地址:http://www.cftea.com/specials/trigger/

1触发器的创建,删除和重命名都可以通过sql语句或者企业管理器来进行。
触发器是一种特殊的存储过程,类似于事件函数,SQL Server允许为 INSERT、UPDATE、DELETE 创建触发器,即当在表中插入、更新、删除记录时,触发一个或一系列 T-SQL语句。
2复杂一点的触发器应用
INSTEAD OF
执行触发器语句,但不执行触发触发器的 SQL 语句,比如试图删除一条记录时,将执行触发器指定的语句,此时不再执行 delete 语句。例:
create trigger f
on tbl
instead of delete
as
    insert into Logs...

IF UPDATE(列名)
检查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:
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 之前所影响的记录形成的表。例:
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。
3查看当前数据库中有那些触发器
在查询分析器中运行:
select * from sysobjects where xtype='TR'
sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记录即为触发器对象。在 name 一列,我们可以看到触发器名称。
4查看触发器的内容
可以通过查询分析器运行 exec sp_helptext '触发器名称'
将会以表的样式显示触发器内容。
除了触发器外,sp_helptext 还可以显示 规则、默认值、未加密的存储过程、用户定义函数、视图的文本
或者通过用企业管理器查看
在表上点右键->“所有任务”->“管理触发器”,选择所要查看的触发器
5查看触发器的属性
存储过程 sp_helptrigger 用于查看触发器的属性。
sp_helptrigger 有两个参数:第一个参数为表名;第二个为触发器类型,为 char(6) 类型,可以是 INSERT、UPDATE、DELETE,如果省略则显示指定表中所有类型触发器的属性。
exec sp_helptrigger tbl
6多个触发器
触发器的名称不同,触发事件相同(INSERT、UPDATE、DELETE),我们称为多个触发器。
多个触发器之间的执行顺序并不确定。
我个人认为应该避免使用多个触发器,因为它不利于维护。
7触发器的回滚
例如
我们看到许多注册系统在注册后都不能更改用户名,但这多半是由应用程序决定的, 如果直接打开数据库表进行更改,同样可以更改其用户名,在触发器中利用回滚就可以巧妙地

实现无法更改用户名。
use 数据库名
go
create trigger tr
on 表名
for update
as
    if update(userName)
        rollback tran
关键在最后两句,其解释为:如果更新了 userName 列,就回滚事务。
8启用和禁用触发器
禁用:alter table 表名 disable trigger 触发器名称
启用:alter table 表名 enable trigger 触发器名称
9不能在触发器中使用的语句
触发器中可以使用大多数 T-SQL 语句,但如下一些语句是不能在触发器中使用的。
1,CREATE 语句,如:CREATE DATABASE、CREATE TABLE、CREATE INDEX 等。
2,ALTER 语句,如:ALTER DATABASE、ALTER TABLE、ALTER INDEX 等。
3,DROP 语句,如:DROP DATABASE、DROP TABLE、DROP INDEX 等。
4,DISK 语句,如:DISK INIT、DISK RESIZE。
5,LOAD 语句,如:LOAD DATABASE、LOAD LOG。
6,RESTORE 语句,如:RESTORE DATABASE、RESTORE LOG。
7,RECONFIGURE
8,说明:有人说不能用 TRUNCATE TABLE 语句,其实是可以的。

问题:1数据库用户及表的权限的相关知识
2表约束的相关知识

转载于:https://www.cnblogs.com/sutengcn/archive/2007/12/04/982286.html

触发器的创建及相关知识相关推荐

  1. 关于Linux下进程创建的相关知识

    http://www.cnblogs.com/LittleHann/p/3853854.html 转载于:https://www.cnblogs.com/flyback/articles/620661 ...

  2. 设计模式之六个创建型模式的相关知识,简单易懂。

    一. 简单工厂模式-Simple Factory Pattern 1) 工厂三兄弟之简单工厂模式(一) 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高 ...

  3. sqlserver数据库实验 实验九 触发器的创建与使用

    实验九触发器的创建与使用 一.实验目的 本实验的目的是使学生进一步掌握SQL Server触发器的创建及使用方法,加深SQL触发器的理解.通过对数据的更新操作体会其触发器的作用. 二.实验准备 结合课 ...

  4. 数据库及相关知识详解大全

    友情提示以下内容是对数据库以及相关知识所做的一个阐述,内容较多需多花费些各位看官宝贵时间,不过全是干货以及一些小的实例,我相信各位点进来的看官都会有所收获. 数据库介绍 什么是数据库? 数据库(Dat ...

  5. shell的相关知识(变量、脚本定义)

    一.shell的相关知识: 1.对于shell编程语言大体分为:机器语言.汇编语言.高级语言 2.shell变量类型:事先确定数据的存储格式和长度 shell变量分为:字符型.数值型 数值型又分为:整 ...

  6. WinForm开发,窗体显示和窗体传值相关知识总结

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm开发,把用到的相关知识整理如下 A.WinForm中窗体显示显示窗体可以有以下2种方法: Form.ShowDialo ...

  7. VMware虚拟网络相关知识

    VMware虚拟网络相关知识 虚拟网桥         通过虚拟网桥把虚拟机的虚拟网卡连接到宿主机的物理网卡上.通过它可以将虚拟机连接到宿主机所在的外部网络.如果宿主机上不止是一个物理网卡时,采用定制 ...

  8. 有关线程的相关知识(下)

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/70339618 本文出自:[顾林海的博客] 前言 在上一篇文章<有 ...

  9. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

  10. Mysql数据库(四)——mysql索引相关知识

    Mysql数据库(四)--mysql索引相关知识 一.索引的概念 二.索引的优缺点 1.优点 2.缺点 三.创建索引的原则 四.索引的分类和创建方法 1.普通索引 ①.直接创建索引 ②.修改表方式创建 ...

最新文章

  1. 2021深度学习的研究方向推荐!Transformer、Self-Supervised、Zero-Shot和多模态
  2. c语言不能写入文件,求大神看看为什么不能将数据写入文件
  3. 操作系统 进程调度-银行家算法实验报告
  4. python requests 异步调用_带有Python请求的异步请求
  5. (Q 2)netstat命令 检测TCP/IP 网络链接是否存在异常
  6. Keras-Sequential模型(2)
  7. redis缓存穿透,缓存击穿,缓存雪崩原因和解决方案
  8. centos php mysql 配置_CentOS系统中安装配置Apache+PHP+MySQL环境
  9. 01_Navicat的快捷键学习
  10. 【教程下载】QGIS的安装及中文配置教程.pdf
  11. maven 配置阿里云仓库
  12. linux服务器的外网IP查阅方式
  13. 【外挂编程】外挂编程技术揭秘(一)
  14. 聚苯硫醚的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. PPT打不开提示访问出错怎么办
  16. 【收藏】前端开发必备:前端开发不得不收藏的网站,提高200%开发效率!
  17. 回归预测 | MATLAB实现SSA-BP多输入单输出回归预测
  18. 基于低代码开发平台实现的企业OA升级替换方案
  19. 大华球机出现不明色块的解决历程
  20. 人生感悟--条条经典

热门文章

  1. 系统学习深度学习(三十)--BiLSTM
  2. 数学篇--初中数学知识
  3. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录
  4. docker安装eclipse che
  5. MySQL5.6.26升级到MySQL5.7.9实战方案
  6. ubuntu配置vsftpd记录
  7. 东京disney sea流水账 2
  8. 爱与光 android4.0学习
  9. BeanShell变量和方法的作用域
  10. EditorUtility.SetDirty 设置已改变