Как заблокировать всю таблицу в symfony2 с помощью doctrine2?
Мне нужно заблокировать всю таблицу (не одну строку) с доктриной, я хотел бы сделать это без собственных запросов, если это возможно.
Документация дляпессимистическая блокировка только описывает, как заблокировать определенные объекты с помощью этих методов:
EntityManager#find EntityManager#lock Query#setLockModeУ меня есть транзакция, которая должна вставить строку, значения которой зависят от значений остальных строк таблицы, поэтому мне нужно предотвратить одновременное выполнение двух транзакций в этой таблице.
Я использую явное разграничение транзакций, которое должно хорошо работать с блокировкой (в соответствии с документацией выше).
NOTEВ этом случае оптимистическая блокировка недостаточно хороша, я не могу позволить повторить транзакцию. Кроме того, запрос не должен быть медленным, поэтому производительность не является проблемой.
EDITЯ приведу пример. Представьте, что вы хотите собрать auto_increment вручную, и вам нужно выбрать max () из таблицы, чтобы получить предыдущий результат, чтобы вставить следующий. Вы должны убедиться, что никакие две транзакции не пытаются вставить одно и то же значение, если они выбирают max () одновременно.
Я ищу общее решение этой проблемы, когда auto_increment не подходит, например, со строками или несколькими столбцами, хэшами или какими-либо вычислениями, которые вы должны выполнить в предыдущем наборе строк.
Блокировка является надежным решением, и, в отличие от оптимистичной блокировки, вам не нужно повторять ошибки.
Итак, есть ли способ использовать блокировку таблицы в доктрине?