在ms ss中如何实现行级触发器

请问在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

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus