Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6167471
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T22:31:08+00:00 2026-05-23T22:31:08+00:00

update mytable set node_index=0 where id in ( SELECT id FROM mytable WHERE rownum<=10

  • 0
update mytable set node_index=0 where id in (
        SELECT 
            id
         FROM mytable
         WHERE 
            rownum<=10 and PROCS_DT is null  
         order by CRET_DT,PRTY desc) 

I got this query as part of a previous answer to my question. Now how to lock the rows in the select query to make sure no other thread over writes my update.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T22:31:09+00:00Added an answer on May 23, 2026 at 10:31 pm

    It’s not clear to me that you have the problem you seem to think you have.

    Updating a row in the table inherently places a row-level lock on that row. No other session can update that row until you release the lock by ending your transaction by committing or rolling back. Once you complete your transaction, other sessions are free to overwrite your update. There is no need or benefit to locking the rows in the SELECT.

    If you are trying to write your application to avoid lost updates (i.e. you want to avoid another session updating the same rows that you did after you committed your transaction without showing the other user your updated data first), your application would need to implement some sort of additional locking. The most efficient would be to implement optimistic locking using some sort of LAST_UPDATE_TIMESTAMP column in the table. Assuming you added this column to the table if it doesn’t already have one, you would select the LAST_UPDATE_TIMESTAMP whenever you queried data to present to the user and you would specify that LAST_UPDATE_TIMESTAMP in your UPDATE. If your UPDATE updated exactly 1 row, you know that no one had changed the data since you queried it. If your UPDATE updated 0 rows, you would know that the data had changed since you had queried it and your application would need to take appropriate action (i.e. re-querying the data, re-presenting it to the user, asking the user whether to keep any of the uncommitted changes they had made, etc.).

    Your query does have another problem, however. The SELECT statement is almost certainly not doing what you think (or intend) for it to do. This query gets an arbitrary 10 rows from MYTABLE where PROCS_DT is NULL and then orders those arbitrary 10 rows.

             SELECT 
                id
             FROM mytable
             WHERE 
                rownum<=10 and PROCS_DT is null  
             order by CRET_DT,PRTY desc
    

    Assuming that you actually want to get the “top 10” results, you would need to do the ORDER BY in a subquery before applying the ROWNUM predicate, i.e.

             SELECT 
                id
             FROM (SELECT *
                     FROM mytable
                    WHERE procs_dt IS NULL
                    ORDER BY cret_dt, prty desc)
             WHERE 
                rownum<=10 
    

    Or you could use an analytic function, i.e.

             SELECT 
                id
             FROM (SELECT m.*,
                          rank() over (ORDER BY cret_dt, prty desc) rnk
                     FROM mytable m
                    WHERE procs_dt IS NULL)
             WHERE 
                rnk<=10 
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

update mytable set node_index=0 where id in ( SELECT id FROM mytable WHERE rownum<=10
Imagine the following sql query: UPDATE MYTABLE SET COL2 = (SELECT COL2 + 1
Query: update mytable set mycol = null where id in ( 583048, 583049, ...
This is my query. cursor2.execute(update myTable set `+ str(row[1]) +` = \' + str(row[3])
I have the following code: UPDATE myTable SET Col1 = @Value However, I have
new_thing = MyTable(last_updated=datetime.datetime.now()) new_thing.save() >>>>select * from MyTable\G; last_updated: 2010-04-01 05:26:21 However, in my
There is a query: UPDATE MyTable SET nvarchar1 = 'blahblah' WHERE Id = '096fe792-7313-416f-b3c8-327f46be73b6'
I have the following UPDATE statement: update mytable set a = first_part(genid()), b =
Does following update query always leave table data unchanged? update mytable set column1 =
In mysql, I can do the following query, UPDATE mytable SET price = '100'

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.