How do I guarantee row uniqueness in MySQL without the use of a UNIQUE constraint?
        Posted  
        
            by MalcomTucker
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by MalcomTucker
        
        
        
        Published on 2010-03-16T14:01:23Z
        Indexed on 
            2010/03/16
            14:06 UTC
        
        
        Read the original article
        Hit count: 221
        
mysql
Hi
I have some fairly simple requirements but I'm not sure how I implement them:
- I have multiple concurrent threads running the same query
- The query supplies a 'string' value - if it exists in the table, the query should return the id of the matching row, if not the query should insert the 'string' value and return the last inserted id
- The 'string' column is (and must be) a text column (it's bigger than varchar 255) so I cannot set it as unique - uniqueness must be enforced through the access mechanism
- The query needs to be in stored procedure format (which doesnt support table locks in MySQL)
How can I guarantee that 'string' is unique? How can I prevent other threads writing to the table after another thread has read it and found no matching 'string' item?
Thanks for any advice..
© Stack Overflow or respective owner