请教,不设外键的后遗症

06-09-19 regenesis
         

数据库已经设计好,但是各表之间没有外健

我在一个事务中处理一个业务,该业务包括两个步骤,1.插入a, 2.将a.id set 进b,然后更新b.

我知道上述做法完全背离了oo思想,但我没权改数据库表,而且一旦改了,牵连很大.

如果事务不提交,则更新b时拿不到a.id,如果两个步骤分开在两个事务中,则破坏的业务方法的事务性

请问各位高手有办法解救吗?

         

banq
2006-09-22 09:52

>如果事务不提交,则更新b时拿不到a

你这是因为只利用了数据库的悲观锁功能,悲观锁在一个数据记录更新时,会进行lock。

设置成乐观锁,然后使用Hibernate或EJB CMP之类框架进行记录事务控制。

这和设不设外健没有关系。