¿Cómo se puede obtener las filas exactas afectadas por la instrucción SQL UPDATE
en MySQL?seleccionar las filas afectadas por una actualización
Tengo muchos clientes en muchos equipos que pueden actualizar filas en la misma tabla según las cláusulas WHERE
en cualquier momento, y cada cliente necesita hacer algo en otro sistema para cada fila que afectan, por lo que obtener la lista de los artículos afectados deben ser precisos y no ser vulnerables a las condiciones de carrera.
Algunas bases de datos apoyan UPDATE ... OUTPUT UPDATED.id WHERE ...
por ejemplo SQL Server.
¿Cómo se puede hacer esto atomic UPDATE
/SELECT
en MySQL?
(he visto sugerencias de hacer el SELECT
primero y luego usando los identificadores como una cláusula IN
en el UPDATE
. Sin embargo, otro cliente puede ejecutar el mismo SELECT
y recuperar las mismas filas, mientras que el primer cliente está en la cola de su UPDATE
etc. ?)