I’m inserting a row using an Oracle stored procedure which is configured to use an autonomous transaction. I’d like to insert this record, commit that transaction, and then lock the newly-inserted record so that nobody else can modify it except my current session (in another transaction, obviously, since the one that inserted it is autonomous).
How can I ensure that nobody else gets a lock on this new record before I have a chance to SELECT...FOR UPDATE it?
Using Oracle 10g.
No, you can never maintain a lock between transactions. The question you should be asking yourself is why you need to issue the commit between the
insertand theselect ... for update. The row is locked by theinsert; if you finish whatever it is that you’re doing with that row before you commit, then you don’t have to worry about re-locking the row.