关于在程序上处理SQLSERVER的事务问题
表A
(
aID int 主键自增
aName varchar(10)
)
表B
(
bID int 主键自增
aID int 指向表A的aID
bAge int
)
表A与表B 是1对1关系。
那么程序上实现的需要,
开始一个事务,向表A插入记录,我查询得表A中插入结果,再向表B中插入记录。
两表都插入成功后,提交事务。
但在向表A插入记录后,事务未提交,是无法查询到该记录的自增ID是多少的。所以程序一直停在那里,直到超时。
请教各位大虾应该怎么处理呢?
我用的是sql2008 .net 3.5。
[解决办法]
if object_id('A') is not null drop table Aif object_id('B') is not null drop table Bcreate table A(aID int identity(1,1),aName varchar(10))gocreate table B(bID int identity(1,1),aID int ,bAge int)gobegin tran insert into A select 'Name1';insert into B select @@IDENTITY,20--or insert into B select IDENT_CURRENT('A'),20--or insert into B select SCOPE_IDENTITY(),20commit transelect * from Aselect * from B
[解决办法]
建议把事务写在存储过程里,而非用ADO.net的控件控制.
[解决办法]
这类的工作用触发器实现最简单