1.请问sqlserver中如何判断触发器是insert、update和delete?2.请教一下以下的这张表的update触发器怎么写? 
表结构:create table ss_Item 
(
Item_Id int primary key identity(1,1), --分类id
Item_Name varchar(50),  --分类名称
Item_ParentId int,  --父id和Item_Id 关联
Item_Leve1 int,  --等级菜单
)
表数据:
item_id     item_name     item_ParentId    Item_leve1
   1           1级              -1            1
   2           2级              1             2 
   3           3级              1             2
   4           4级              2             3
   5           2级              1             2
   6           3级              3             3
   7           5级              5             3
要求就是当对表中Item_ParentId执行update时能够对它父级菜单的Item_Leve1加1,注:后面三个字段可能有重复的数据。
请大侠帮帮忙,谢谢!

解决方案 »

  1.   

    1.是什么类型,触发器上都标明的.
    2.同表的列值更改,最好是在语句上执行,你在update上加一句Item_Leve1=Item_Leve1+1是很简单的事情,为什么非要到触发器里弄呢,还得判断是否更改.
    3.如果一定要用触发器,最好用instead of 触发器.
      

  2.   

    create trigger tr_name on tb
    for update
    as
    ..
      

  3.   

    一般触发器中用INSERTED和DELETED两个表数据有无判断哪类操作IF EXISTS (SELECT 1 FROM INSERTED ) AND NOT EXISTS (SELECT 1 FROM DELETED)  -- 插入
    BEGIN
       ...
    END
    ELSE  IF EXISTS (SELECT 1 FROM INSERTED ) AND EXISTS (SELECT 1 FROM DELETED)  -- 更新
    BEGIN
       ...
    END
    ELSE  IF NOT EXISTS (SELECT 1 FROM INSERTED ) AND EXISTS (SELECT 1 FROM DELETED)  -- 删除
    BEGIN
       ...
    END
      

  4.   

    create trigger tr_name on tb
    for update
    as
    begin
    ....具体操作语句了
    end
      

  5.   

    触发器可以
    create trigger tr_name on tb
    for update,INSERT,DELETE
    as...
    GO
    这需要判断是那类操作
      

  6.   

    2.请教一下以下的这张表的update触发器怎么写?  
    太复杂,不建议用触发器