.net 触发器 和事务

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:32:47
求一个 .net触发器和事务的结合使用的例子。
希望能说明道理即可。 复杂度越小越好。

比如:
A表(字段1,字段2)
B表(字段1,字段2)
触发器
插入 A时 同时插入B
事务
要么都能插入成功,要么都插入失败。

当然您自己的例子也可以, 非常感谢了!

我真不知道怎么做 触发器里插入的语句跟你插入的语句根本就不再一起 事务怎么写?你插入A表成功才会触发 触发器 那么你在触发器里直接判断触发的插入语句不就完了

你的这个要求用事务是不能实现的。
对于事务来说,触发器的两个操作在它看来只是一个操作,只要删除第一张表成功了,它就会认为是成功的,自然不会回滚
所以要实现这个要求,只能是在触发器内部进行判断。可以判断一下系统内部的Deleted表,看这张表是否为空,如果为空,说明没有删除东西,那么就不做进一步的动作

CREATE TRIGGER ON A FOR INSERT
AS
BEGIN
INSERT INTO B
(B.字段1, B.字段2)
VALUES
(inserted.字段1,inserted.字段2)
END

//以下测试成功,不知是否合乎阁下的命题

--AB表结构相同,只有两列,列名为name,password
select * from A
select * from B

--建立触发器
create trigger trig_A on A for insert
as

declare @name varchar(50),@password varchar(50)
select @name=name,@password=password from inserted
insert into B(name,password) values(@name,@password)

go

insert into A values('lee','123')
--测试触发器成功

//以下为aspx文件,有两个文本框用于填写name,password
protected void Button1_Click(object sender, EventArgs e)