Como bloquear uma tabela inteira no symfony2 com doctrine2?

Eu preciso bloquear uma tabela inteira (não uma única linha) com doutrina, eu gostaria de fazer isso sem consultas nativas, se possível.

A documentação parabloqueio pessimista descreve apenas como bloquear entidades específicas por meio desses métodos:

EntityManager # findEntityManager # lockConsulta # setLockMode

Eu tenho uma transação que precisa inserir uma linha cujos valores dependem dos valores do restante das linhas na tabela, portanto, preciso impedir que duas transações sejam executadas ao mesmo tempo nessa tabela.

Estou usando a demarcação explícita de transação, que deve funcionar bem com bloqueio (de acordo com a documentação acima).

NOTA: Bloqueio otimista não é bom o suficiente, neste caso, não posso pagar para tentar novamente a transação. Além disso, a consulta não deve ser lenta, portanto, o desempenho não é um problema.

EDITARVou dar um exemplo. Imagine que você queira criar manualmente um auto_increment, e você tem que selecionar max () da tabela para obter o resultado anterior, a fim de inserir o próximo. Você tem que ter certeza que nenhuma transação tenta inserir o mesmo valor caso eles selecionem max () ao mesmo tempo.

Eu estou procurando uma solução geral para este problema quando auto_increment não é bom, por exemplo, com seqüências de caracteres ou várias colunas, hashes ou qualquer cálculo que você tem que fazer no conjunto de linhas anterior.

O bloqueio é uma solução sólida e, diferentemente do bloqueio otimista, você não precisa repetir erros.

Então, existe alguma maneira de usar o bloqueio de tabelas na doutrina?

questionAnswers(3)

yourAnswerToTheQuestion