Как заблокировать всю таблицу в symfony2 с помощью doctrine2?

Мне нужно заблокировать всю таблицу (не одну строку) с доктриной, я хотел бы сделать это без собственных запросов, если это возможно.

Документация дляпессимистическая блокировка только описывает, как заблокировать определенные объекты с помощью этих методов:

EntityManager#find EntityManager#lock Query#setLockMode

У меня есть транзакция, которая должна вставить строку, значения которой зависят от значений остальных строк таблицы, поэтому мне нужно предотвратить одновременное выполнение двух транзакций в этой таблице.

Я использую явное разграничение транзакций, которое должно хорошо работать с блокировкой (в соответствии с документацией выше).

NOTEВ этом случае оптимистическая блокировка недостаточно хороша, я не могу позволить повторить транзакцию. Кроме того, запрос не должен быть медленным, поэтому производительность не является проблемой.

EDITЯ приведу пример. Представьте, что вы хотите собрать auto_increment вручную, и вам нужно выбрать max () из таблицы, чтобы получить предыдущий результат, чтобы вставить следующий. Вы должны убедиться, что никакие две транзакции не пытаются вставить одно и то же значение, если они выбирают max () одновременно.

Я ищу общее решение этой проблемы, когда auto_increment не подходит, например, со строками или несколькими столбцами, хэшами или какими-либо вычислениями, которые вы должны выполнить в предыдущем наборе строк.

Блокировка является надежным решением, и, в отличие от оптимистичной блокировки, вам не нужно повторять ошибки.

Итак, есть ли способ использовать блокировку таблицы в доктрине?

Ответы на вопрос(3)

Ваш ответ на вопрос