我想插入在某个表在新建/修改/删除符合一定规则时,如某字段值>100,就向另一日志表写入一条记录,但是不知道怎么写读取新建修改删除的操作。请帮忙,谢谢了
create trigger trigger_1
on table1
for insert,delete,update
as
INSERT Trigger_Stakeout (col1, col2, col3)
select ???????????????????????????? from ??
这里怎么同时能读取我需要的insert,delete,update的信息呢?

解决方案 »

  1.   

    insert操作无deleted表
    delete操作无inserted表
    所以你要分别写,或者在语句中进行检测
      

  2.   

    --LZ没有说明清楚是什么值要写日志?删除的值?改变前或改变后为多少的值才写日志?
    --例如,删除前如某字段值>100,
    create trigger trigger_1
    on table1
    for delete
     as
    INSERT Trigger_Stakeout (col1, col2, col3)
    select col1, col2, col3 from deleted
    where 字段值>100
    go
     
      

  3.   

    create trigger trigger_1
    on table1
    for insert,delete,update
    as
    INSERT Trigger_Stakeout (col1, col2, col3,类型)
    select ...,'改后或者插入' from inserted 
    where 某字段值>100
    union all
    select ...,'改前或者删除' from deleted 
    where 某字段值>100
      

  4.   

    2楼是说insert,delete不能同时存在吗?我是要在操作table1表(包括新建,修改,删除记录)的时候检测某一条件是否成立如col2>100,如果成立则触发,在trigger_stakeout中插入一条记录,记录被操作表的名称即table1,符合条件即>100,值为100的列名即col2及其他一些附属信息
      

  5.   

    i9988不可以吗?LZ要分别对3种操作做判断?