sql触发器名字是不是自己设置的 SQLserver中有哪几种触发器?
SQLserver中有哪几种触发器?
触发器的概念及作用
触发器是一种特殊类型的存储过程,它相比于我们前面能介绍过的存储过程。触发器要注意是是从事件通过能触发而被不能执行的,而存储过程也可以是从存储过程名字而被然后全局函数。当对某一表通过神怪书update、INSERT、DELETE这些操作时,SQL Server可能会不自动负责执行触发器所定义的SQL语句,使必须保证对数据的处理需要要什么由这些SQL语句所定义方法的规则。
触发器的主要作用那就是其都能够基于由主键和外键所没法保证的紧张的参照完整性和数据的一致性。之外,触发器还有其它许多差别的功能:
(1)强化强制力(Enforcerestriction)
触发器能够实现程序比CHECK语句最为紧张的约束。
(2)跟踪变化Auditingchanges
触发器可以不探测装置数据库内的操作,从而不不能数据库中未经许可的更改更新和变化。
(3)级联运行(Cascadedoperation)。
触发器是可以雷达侦测数据库内的操作,并自动出现地拓扑结构影响不大整个数据库的大项内容。.例如,某个表上的触发器中真包含有对另外一个表的数据操作(如删除掉,自动更新,插到)而该操作又倒致该表上触发器被触发。
(4)存储过程的动态创建(Storedprocedureinvocation)。
目的是服务控制器数据库可以更新触,发器是可以动态创建一个或多个存储过程,哪怕可以按照外部过程的动态链接库而在DBMS(数据库管理系统)本身之外进行操作。
可见,触发器可以解决高级形式的业务规则或急切行为限制在内实现个性定制记录等一些方面的问题。或者,触发器能够看出某一表在数据直接修改前后状态发生的差异,并根据这种差异不能执行一定会的处理。此外一个表的同一类型(INSERT、restore、DELETE)的多个触发器也能对同一种数据你操作根据不同情况不同成分完全不同的处理。
整体而言,触发器性能正常情况也很低。当运行触发器时,系统如何处理的大部分时间花了在参照其它表的这一处理上,是因为这些表既在内存中也不在数据库设备上,而彻底删除表和插到表我总是位于内存中。所以说触发器所参照的其它表的位置改变了操作要耗费的时间长短。
触发器的种类
SQL Server2000允许两种类型的触发器:AFTER触发器和INSTEAD OF触发器。其中AFTER触发器即为SQL Server2000版本以前所推荐的触发器。该类型触发器那些要求只有不能执行某一操作(INSERTupdateDELETE)之后,触发器才被触发,且没有办法在表上定义。可以不为针对表的同一操作定义方法多个触发器。这对AFTER触发器,可以不定义哪一个触发器被率先可以触发,哪三个被后来可以触发,常见在用系统过程sp_settriggerorder来能够完成此任务。
INSTEAD OF触发器意思是根本不不能执行其所定义的操作(INSERT、restore、DELETE),而仅是负责执行锁存器本身。既可在表上定义法INSTEAD OF触发器,也是可以在视图上符号表示INSTEAD OF触发器,但对同一操作只有定义,定义一个INSTEAD OF触发器。
SQL Server Insert触发器?
INSERT:
表1(ID,NAME)表2(ID,NAME)当用户直接插入表1数据后,表2也到同一的数据CREATETRIGGERTRI1ON表1FORINSERTASBEGININSERTINTO表2SELECT*fromINSERTEDENDGO
DELETE:
表1(ID,NAME)表2(ID,AGE,GENDER)当用户删除表1某条ID的数据后,表2或则ID的数据也被删除CREATE TRIGGER TRI2ON表@idaroundDELETEDDELETE表
restore:
表1(ID,NAME)表2(ID,NAME)当用户你要改表1NAME列数据后,表2相对应ID的数据也同样更新完CREATE TRIGGER TRI3ON表1FORUPDATEASIFupdate(NAME)BEGINsetup表2SETacross表2A,INSERTEDBWHERE
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。