触发器编程规范:
1.非特殊情况不在触发器中查询
2.创建触发器使用DML类,对insert、delete、update语句进行响应
3.创建触发器使用After后置类型触发器
4.原则上使用语句级别触发器,SQL server无行级触发器
5.应避免和杜绝触发器递归:
1.触发器中向本表insert、delete、update
2.触发器中向已经创建过触发器的表insert、delete、update
6.触发器中进行必要的异常捕获和处理,触发器中的错误会导致数据操作整体回滚影响系统业务
7.如需要事务控制,应使用显式的事务控制语句
触发器特征
1.如果触发器中发生错误则主表数据不会发生变更(insert、delete、update)
2.触发器中操作其他数据库、表发生错误则主表、被操作表数据都不会变更
3.触发器中操作多张表,如果有任意操作出错则整体回滚
4.SqlServer、Oracle可在触发器中通过Commit、Commit Tran、rollback tran或rollback 语句控制事务
after insert trigger
1.同一个服务器中的两个数据库,A库t1表 after insert 触发器中向 B库 t2表 insert 数据:
1.如果向t2表中插入失败,则直接影响 A库t1表的插入,A库t1表也无法插入。【事务一致】
2.触发器执行发生错误影响 insert 命令也无法成功写入数据