2012-04-26 55 views
1

我需要用两个CLOB列更新ORA表。ORACLE更新两个CLOB列 - 可能的表锁进一步更新?

我发现有很多方案来解决这个(一个select x, y into x_loc, y_loc from table for update,然后做一个dbms_lob.write() + commit),但我意识到,这个人是简单,因为它应该是:

UPDATE table SET 
    clob1 = TO_CLOB(VARCHAR2_VALUE), 
    clob2 = TO_CLOB(VARCHAR2_VALUE) 
WHERE condition 

从PHP执行这个查询后应用程序我遇到奇怪的行为时,我不能执行任何其他更新该表(和/或具体行) - 应用程序只是挂在右侧另一个更新(通过调试确认)。当试图使用sqldeveloper来更新查询时,似乎没有锁定问题。

在CLOB更新之后,是否有可能表/行保持锁定状态? 我应该使用给定的更新查询在CLOB更新后做/提交吗? 如何释放此锁?

非常感谢您的回答!

+1

承诺 - 使用承诺 – iddqd 2012-04-26 12:29:23

+0

@iddqd请把它放在一个完整的句子中,并将其作为答案发布,以便我可以接受您的答案。当然,单独做一个COMMIT之后会发布一个表格;-)谢谢! – shadyyx 2012-04-26 12:34:05

回答

1

您必须提交每个DML查询(INSERT,UPDATE,DELETE)。

无论您使用CLOB还是不使用。

+0

不确定“必须在每个INSERT/UPDATE/DELETE后提交” - 直到现在还没有这样做,并且在更新CLOB之前没有发生任何问题。但是在CLOB更新后提交工作(释放锁)并且正在工作(从那时起没有锁)。谢谢! – shadyyx 2012-04-27 12:59:19