SQLServer触发器的使用
SQLServer为每个触发器创建两个私有表:插入表和删除表。这两个表由系统保存,它存在于内存中而不是数据库中。这两个表的结构总是与触发器触发的表结构相同。在执行触发器之后,删除与触发器相关的两个表。桌子的操作
插入逻辑表
Deleted logic table
增加记录(插入)
增加记录
没有什么
删除记录(删除)
没有什么
存储已删除的记录
修改记录(更新)
存储更新记录
在更新之前存储记录
三,代替后触发器
后:触发语句之后触发完成后执行。如果因为错误的语句失败,触发将不会被执行,触发后不能为视图指定,只有触发是指定的表格,您可以指定多个触发器,每个触发器后操作(插入,更新,删除)。如果有多个后触发器表中,sp_settriggerorder可以用来定义后,触发第一激发,这是最后的激励。除了第一个和最后一个触发器,在触发器的所有其他有不确定和不可控的激励序列。
为:相当于
而不是:该触发器执行触发器操作代替,而不是触发器可以在表和视图指定。而不是触发器只能定义为每个触发操作(插入,更新,删除),而不是触发器可用于执行在INSERT和UPDATE语句提供的数据值提高完整性检查。
四。触发器的使用
1。创建触发器:
创建触发器trigger_name
在table_name view_name | { }
{为|后代替| }
{插入、更新、删除}
作为
sql_statement
2,删除触发器:
删除触发器trigger_name
三.查看数据库中已有的触发器:
SELECT * FROM sysobjects xtype = TR的地方
4。看一个触发器:
执行sp_helptext '触发器名称
5。修改触发器:
改变触发trigger_name
在table_name view_name | { }
{为|后代替| }
{插入、更新、删除}
作为
sql_statement
五,触发器的一个例子
1。在命令表中创建触发器。当一个记录被插入到订单表,检查表的商品货物状态为1。是的,订单不能被添加到订单表。如果(object_id('tgr_orders_insert,TR的)不为空)
删除触发器tgr_orders_insert } {;
去
创建触发器tgr_orders_insert } {
关于{订单}
插入后
作为
如果(从{ } }中选择{状态},{ { },{ { } },在这里{ { } }。name = 1)=
开始
print'the商品正在处理中
print'the秩序不能犯的
回滚事务——回滚以避免连接
终点