2012-04-26 66 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