当我不提交直到结束时,如何将记录插入到共享依赖关系的2个SQL表中?

时间:2010-04-21 13:52:51

标签: sql transactions

我不断发现自己处于这种情况中:

我有一个ASP.NEt 2.0应用程序。我必须在SQL中插入2个表。表之间存在依赖关系。我使用事务插入第一个记录。然后我进入第二张桌子。但是,因为第一个没有提交,第二个抛出错误。

2 个答案:

答案 0 :(得分:1)

修改每个表时,不得使用相同的连接。尝试对两个表的所有更改使用相同的连接和单个事务。在事务中,您会看到您的更改,并且在您执行它们之前,没有其他人会看到它们(除非它们强制执行脏读)。

答案 1 :(得分:0)

为什么不创建一个存储过程? 通过这种方式,使用A SINGLE事务,您可以调用STORED PROCEDURE,它首先将INSERT插入父表,然后(在同一事务内)插入子表。

CREATE OR REPLACE PROCEDURE GOOFY
IS
BEGIN
INSERT INTO MY_PARENT_TABLE VALUES (1111, 'ALPHA');
INSERT INTO MY_CHILD_TABLE VALUES (1111, 'BETA');
END;
/

您所要做的就是从ASP.NET 2.0调用GOOFY:两个INSERTS属于同一个事务,您可以决定COMMIT或ROLLBACK。