试一下这个:create trigger tr_hehe_Insert on hehe for insert asdeclare @Maxid int declare @i int declare @id int declare @Name varchar(50)select @Maxid=max(id) from hehe h where not exists ( select * from inserted i where i.id=h.id and i.name=h.name )select @i=1 declare cur insensitive cursor for select id,Name from inserted for read onlyopen curfetch next from cur into @Id,@Name while( @@fetch_status <> -1 ) begin update hehe set id=@MaxId+@i where id=@id and name=@Name select @i=@i+1 fetch next from cur into @Id,@Name endclose cur deallocate curgo
SQL7。0中的触发器就是INSERT后触发器, 可以对你刚插入的记录进行修改. 看如下的例子:要求TableA表的行号字段的默认值为 -1. CREATE TRIGGER [TRI_TableA_INS] ON TableA FOR INSERT ASDECLARE @ROWN INT SELECT @ROWN = @@ROWCOUNT IF @ROWN = 0 RETURNIF @ROWN > 1 BEGIN ROLLBACK TRANSACTION RAISERROR ('一次只能填加一条记录!',16,10); RETURN ENDDECLARE @MXCOUNT INT SELECT @MXCOUNT=COUNT(*) FROM TableA WHERE 单据号 IN (SELECT 单据号 FROM INSERTED)UPDATE TableA SET 行号=@MXCOUNT WHERE 行号=-1RETURN
还又谁有好办法!!!!!!!159分啊
on hehe
for insert
asdeclare @Maxid int
declare @i int
declare @id int
declare @Name varchar(50)select @Maxid=max(id)
from hehe h
where not exists (
select * from inserted i
where i.id=h.id
and i.name=h.name
)select @i=1
declare cur insensitive cursor for
select id,Name from inserted for read onlyopen curfetch next from cur into @Id,@Name
while( @@fetch_status <> -1 )
begin
update hehe
set id=@MaxId+@i
where id=@id and name=@Name
select @i=@i+1
fetch next from cur into @Id,@Name
endclose cur
deallocate curgo
CREATE TRIGGER [TRI_TableA_INS] ON TableA
FOR INSERT
ASDECLARE @ROWN INT SELECT @ROWN = @@ROWCOUNT
IF @ROWN = 0
RETURNIF @ROWN > 1
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('一次只能填加一条记录!',16,10);
RETURN
ENDDECLARE @MXCOUNT INT SELECT @MXCOUNT=COUNT(*) FROM TableA WHERE 单据号 IN (SELECT 单据号 FROM INSERTED)UPDATE TableA SET 行号=@MXCOUNT WHERE 行号=-1RETURN