请问在ms ss中如何实现语句级触发器和行级触发器,好象都是语句级触发器
---------------------------------------------------------------
部一定要将每条纪录分开,根据另外一个表中具体情况作处理可以用连接,也可以用表变量和临是表。
既然你这么叫,那sql server的触发器只能属于语句级触发器
---------------------------------------------------------------
怎么好像有问题呢?
CREATE trigger [tri_testa] on testa
FOR UPDATE
as
declare
@a int,
@b int
if update(b)
begin
-- begin TRANSACTION --这一句不能要
insert into testb select a,b from inserted
IF (@@ERROR <> 0) ROLLBACK TRANSACTION
-- else COMMIT TRANSACTION --这一句也不必
end
---------------------------------------------------------------
ok,你的要求简单,不太可能写出复杂语句来。
你可以这样:
CREATE trigger [tri_testa] on testa
FOR UPDATE
as
declare
@a int,
@b int
if update(b)
begin
DECLARE cur CURSOR
FOR select a, b from inserted
FOR READ ONLY
open cur
fetch NEXT FROM CUR INTO @A,@B
WHILE @@FETCH_STATUS = 0
BEGIN
IF @A<>1 AND @A*@B=10 ---可能使更多的条件
BEGIN
insert into testb values (@a, @b)
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
RETURN
END
END
fetch NEXT FROM CUR INTO @A,@B
END
CLOSE cur
DEALLOCATE cur
end