How to 'insert if not exists' in php MySQL
I started by googling, and found this article which talks about mutex tables.
I have a table with ~14 million records. If I want to add more data in the same format, is there a way to ensure the record I want to insert does not already exist without using a pair of queries (ie, one query to check and one to insert is the result set is empty)?
Does a unique constraint on a field guarantee the insert will fail if it's already there?
It seems that with merely a constraint, when I issue the insert via php, the script croaks.
Does a unique constraint on a field guarantee the insert will fail if it's already there?
The unique constraints are enforced when inserting new data. If you try and insert data into a table that already has data, you should get an error like below:
Error Code: 1062. Duplicate entry 'john-doe-(408)-999-9765' for key 'idx_name_phone'
You can use INSERT IGNORE
to simply ignore the insert on the duplicate rows (The error is essentially turned to a warning), or use ON DUPLICATE KEY UPDATE
to update the row instead of inserting a new one. See this post for more information.