UPDATE/DELETE в mysql и получение списка затронутых идентификаторов строк?

Есть ли эффективный способ получить список идентификаторов затронутых строк (не количество затронутых строк через PHP mysql_affected_rows(), а фактические идентификаторы затронутых строк) из запроса UPDATE или DELETE в mysql?

В postgresql существует предложение RETURNING в запросах UPDATE/DELETE, которое можно использовать для указания возвращаемых значений из затронутых строк.

В mysql способ получения затронутых строк "грубой силой" выглядит следующим образом: 1. Приобрести блокировку READ LOCK. 2. SELECT с условием WHERE запроса UPDATE/DELETE для получения идентификаторов затронутых строк. 3. UPDATE/DELETE. 4. СБРОСИТЬ БЛОКИРОВКУ.

Приведенный выше способ кажется очень неэффективным. Есть ли более эффективный способ получить идентификаторы затронутых строк в mysql?

11
задан archmeta 15 January 2012 в 22:12
поделиться