MySQL: updating a row and deleting the original in case it becomes a duplicate

Posted by Silvio Donnini on Stack Overflow See other posts from Stack Overflow or by Silvio Donnini
Published on 2010-06-08T10:10:31Z Indexed on 2010/06/08 10:12 UTC
Read the original article Hit count: 321

I have a simple table made up of two columns: col_A and col_B.

The primary key is defined over both.

I need to update some rows and assign to col_A values that may generate duplicates, for example:

UPDATE `table` SET `col_A` = 66 WHERE `col_B` = 70

This statement sometimes yields a duplicate key error.

I don't want to simply ignore the error with UPDATE IGNORE, because then the rows that generate the error would remain unchanged. Instead, I want them to be deleted when they would conflict with another row after they have been updated

I'd like to write something like:

UPDATE `table` SET `col_A` = 66 WHERE `col_B` = 70 ON DUPLICATE KEY REPLACE

which unfortunately isn't legal in SQL, so I need help finding another way around. Also, I'm using PHP and could consider a hybrid solution (i.e. part query part php code), but keep in mind that I have to perform this updating operation many millions of times.

thanks for your attention,

Silvio

Reminder: UPDATE's syntax has problems with joins with the same table that is being updated

© Stack Overflow or respective owner

Related posts about php

Related posts about mysql