My DBA + Programmer 成长路 ...
Sql-Server 主要提供了两种机制来强制业务规则和数据完整性:约束constrain 和 触发器 trigger ..触发器在制定的表中发生变化时被调用以响应insert,update,delete事件。trigger可以查询其他表,包含复杂的T-sql语句,并支持回滚.每个触发器都会创建两个逻辑专用表:inserted 和 deleted表,表结构与被触发作用的表结构相同 执行完毕后 与触发器相关的两个表都会被删除。当执行insert语句时,inserted表存放要向表中插入的所有行当执行delete语句时,deleted表存放要向表中删除的所有行当执行update语句时,相当于执行一个delete操作,再执行一个insert操作,旧的行先被移动到deleted表,然后再在新值插入到inserted表和目标表。一般的创建trigger : (for / after 语句 触发)
利用触发器instead of 语句代替其他语句操作 (就不执行instead of 后面指定的SQL指令而执行Trigger体 [sql-statements])
例如在系统查询分析器执行 update t1 set column_1='aaa' where id=123 可以看到t1下123号的column_1值没有预期改变 而是按照Trigger中 [sql-statements]中的格式走了如何利用inserted 和 deleted表:例: 创建一个触发器 要求当插入 删除 更新 T1表数据时 能更新 T2表中相应的C2字段值 (C2是统筹t1的字段)
用来检测修改该字段的操作ps:允许多个事件insert delete update创建多个触发器 ,且相互不影响-----系统操作改名trigger : sp_remane Old_Trigger_name,NewTrigger_Name禁用: Alter Table T1 DISABLE trigger Trigger_Name
查询: select * from sysObjects where Type='TR'
posted on 2006-01-15 07:58 Royman.Chen 阅读(542) 评论(0) 编辑 收藏
Powered by: 博客园 Copyright © Royman.Chen