create trigger tr
on YourTable
for INSERT
as if @@rowcount = 0
     return
declare @id varchar(10)
select @id = insertedif @@error !=0 or @id>100
begin  
  rollback tran
  return 
end 
go

解决方案 »

  1.   

    一、表变量不能用触发器。如果是一个表的话,可以这样:
       create trigger mytrigger on 表 instead of insert as
       insert into 表 
       select * from inserted
       where id <=100二、当update时,你可以这样理解:把原记录delete,把新记录insert。
    所以,更新的时候,deleted和inserted表都会相应的内容。而没有updated表
      

  2.   

    写错了,改为:select @id = [id] from inserted
    问题2:update可以理解为由两个操作。首先,旧的数据行从基本表中转移到deleted表中,如果这个过程没错,紧接着将新的数据行同时插入基本表和inserted表中。
      

  3.   

    多谢了,给分吧,大件的第一题应该只能对付单独插入一条语句的,Chiff(~o~) 是正解