触发器的创建及相关知识

触发器的创建及相关知识

文章地址: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://javaforall.net/111064.html原文链接:https://javaforall.net

(0)
上一篇 2021年7月25日 下午3:00
下一篇 2021年7月25日 下午4:00


相关推荐

  • Centos7安装Mysql5.7最全教程[通俗易懂]

    Centos7安装Mysql5.7最全教程[通俗易懂]最近需要在Linux系统上使用MySQL,记录一下安装过程吧,为后来的同学排除一些问题。更新yumyumupdate-y1.安装wget工具我安装到了/export/install这里可以进入你们所想要安装的地方cd/先进入你想安装的位置,此后全部在此文件夹进行操作。sudoyuminstall-ywget2.使用wget下载mysqlyum源:wgethttps://dev.mysql.com/get/mysql80-community-release-el

    2022年5月2日
    89
  • ImageMagick 的安装及使用

    ImageMagick 的安装及使用一、什么是Imagemagick?ImageMagick是一款免费开源的图片编辑软件。既可以通过命令行使用,也可以通过C/C++、Perl、Java、PHP、Python或Ruby调用库编程来完成。

    2022年7月1日
    30
  • Mysql—运行sql的小技巧

    本篇集中整理一下执行sql的小技巧,这种方式不仅带来了操作上的便捷,也可以保证数据可以数据的安全性。 1:查询数据(保证查询性能) 2:插入/更新/删除数据(保证数据安全)

    2022年2月25日
    62
  • 【Tools】Ubuntu20.04安装VMware Tools详解

    【Tools】Ubuntu20.04安装VMware Tools详解00.目录文章目录00.目录01.VMwareTools简介02.VMwareTools功能03.VMwareTools安装方法一05.VMwareTools安装方法二06.附录01.VMwareTools简介VMwareTools中包含一系列服务和模块,可在VMware产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。VMwareTools生命周期管理为VMwareTools的安装和升级提供了一种简单而可扩展的

    2022年5月9日
    457
  • 基于Selenium和ChromeDriver的自动化页面性能测试

    基于Selenium和ChromeDriver的自动化页面性能测试由于最近工作一直很紧张,拖了很久才在五一假期将Selenium实现自动化页面性能测试的代码实现部分补上,希望今后自己能更勤勉,多一些知识产出。SeleniumWebDriver(以下简称SW)提供了一套用于Web应用程序的自动化测试工具。SW按其应用场景不同可以分为(1)基于HtmlUnit的无界面实现,并非驱动真实浏览器进行测试;(2)模拟真实输入,对多浏览器的支持和测试,包括Firefo…

    2022年7月26日
    19
  • 图像融合总结

    图像融合总结一 基于神经网络的图像融合方法 DenseFuse AFusionAppro 有代码 1 方法概述 一种新的基于深度学习的红外图像和可见图像融合的方法 与传统的卷积网络相比 编码网络与卷积层 融合层和密集块相结合 其中每一层的输出彼此相连 作者尝试在编码过程中从源图像中获取更多有用的 feature 并设计了两个融合层 融合策略 以融合 feature 最后 通过解码器重建融合图像 编码器包含两个部分 C1 和 DenseBl

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号