在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
触发器
(1) DELETE触发器 (2) INSERT触发器 (3) UPDATE触发器
触发器触发时: 系统自动在内存中创建deleted表或inserted表 Deleted表和inserted表都是只读的,不允许修改;触发器执行完成后自动删除 Inserted表 临时保存了删除或更新前的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 Deleted表 临时保存了删除或更新前的记录行 可以从delered表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚删除操作 注意:在执行insert操作时,先创建inserted表,将插入的语句放到inserted表中,判断插入语句是否是否符合业务需求,如果不满足就向用户保存错误消息,并回滚插入操作,如果满足则执行成功. 执行deleted操作时,先创建deleted表,将删除的语句放到deleted表中,判断删除的语句是否符合业务需求,如果不满足就想用户报告错误信息,并回滚删除操作,如果满足则执行成功 执行update操作时,先创建inserted表和deleted表,将要修改的表中数据加入deleted表中, 然后将修改后的数据放入inserted表中,判断语句是否符合业务需求,如果不满足就向用户保存错误消息,并回滚插入操作,如果满足则执行成功.
总结为表如下:
语法: Create trigger 触发器名称 On 表名 [with encryption] For[delete/insert/update] As T-SQL语句 GO [with encryption]表示加密触发器定义的SQL文本 [delete/insert/update]指定触发器的类型 9.insert触发器的使用: --当向交易信息表(transInfo)中插入一条交易信息时, --我们应自动更新对应帐户的余额
当删除交易信息表时,要求自动备份被删除的数据到表backupTable中 。
11.UPDATE触发器除了跟踪数据的变化(修改)外,还可以检查是否修改了某列的数据 使用UPDATE(列)函数检测是否修改了某列 问题: 交易日期一般由系统自动产生,默认为当前日期。为了安全 起见,一般禁止修改,以防舞弊。
触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作 触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本 |
请发表评论