学习触发器笔记

来源:互联网 发布:什么直播软件比较开放 编辑:程序博客网 时间:2024/06/03 09:41

下面是我这个上午学习触发器的结果。
首先是触发器的原型。
CREATE TRIGGER trigger_name
  ON { table | view }
  [ WITH ENCRYPTION ] --加密
  {
  { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
    [ WITH APPEND ]--附加
    [ NOT FOR REPLICATION ]--表示当复制进程更改触发器所涉及的表时,不应执行该触发器。
    AS--是触发器要执行的操作。
    [ { IF UPDATE ( column )
      [ { AND | OR } UPDATE ( column ) ]
        [ ...n ]
    | IF ( COLUMNS_UPDATED ( ) -- 测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。
       --  COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。
  { bitwise_operator } updated_bitmask )
        { comparison_operator } column_bitmask [ ...n ]
    } ]
    sql_statement [ ...n ] --是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。
  }
  }

下面是我的一个小例子,希望高手指点。
CREATE TRIGGER myUpdate ON [dbo].[myClient]
FOR UPDATE
AS
declare @date varchar(10),@time varchar(8),@tmp varchar(20)
set @tmp=convert(varchar(20),getdate(),20)
set @date=left(@tmp,10)
set @time=right(@tmp,8)
if (update(serdate))
begin
insert into myLog values (@date,@time)
end

第三,查找数据库中是否有触发器,及触发器的位置(所在表名)
select   a.name   trggername,b.name   tablename   from   sysobjects   a    
  left   join   sysobjects   b    
  on   a.parent_obj=b.id    
  where   a.type   =   'tr'