Является ли это выражение «сравнить и поменять местами» всегда атомарным, независимо от движка (, например. InnoDB или MyISAM )?:
UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1;
Я спрашиваю об этом, потому что собираюсь использовать этот оператор для блокировки уровня псевдостроки -, которая совместима как с транзакционными, так и с нетранзакционными таблицами базы данных -.
Это метод, который рекомендуется для MyISAM , но я не уверен, работает ли он для InnoDB, поскольку документация предлагает вместо этого использовать транзакции.