Jak zablokować całą tabelę w symfony2 za pomocą doctrine2?

Muszę zablokować całą tabelę (nie pojedynczy wiersz) doktryną, chciałbym to zrobić bez zapytań rodzimych, jeśli to możliwe.

Dokumentacja dlapesymistyczne blokowanie opisuje tylko, jak zablokować określone elementy za pomocą tych metod:

EntityManager # findBlokada EntityManager #Zapytanie # setLockMode

Mam transakcję, która musi wstawić wiersz, którego wartości zależą od wartości reszty wierszy w tabeli, więc muszę uniemożliwić wykonanie dwóch transakcji jednocześnie w tej tabeli.

Używam jawnej demarkacji transakcji, która powinna działać dobrze z blokowaniem (zgodnie z powyższą dokumentacją).

UWAGA: Optymistyczne blokowanie nie jest wystarczająco dobre w tym przypadku, nie mogę pozwolić sobie na ponowną transakcję. Poza tym zapytanie nie powinno być powolne, więc wydajność nie stanowi problemu.

EDYTOWAĆ: Podam przykład. Wyobraź sobie, że chcesz ręcznie zbudować auto_increment i musisz wybrać max () z tabeli, aby uzyskać poprzedni wynik, aby wstawić następny. Musisz upewnić się, że żadne dwie transakcje nie próbują wstawić tej samej wartości na wypadek, gdyby wybrały max () w tym samym czasie.

Szukam ogólnego rozwiązania tego problemu, gdy auto_increment nie jest dobre, na przykład za pomocą łańcuchów lub wielu kolumn, skrótów lub jakichkolwiek obliczeń, które należy wykonać w poprzednim zestawie wierszy.

Blokowanie jest solidnym rozwiązaniem i, w przeciwieństwie do blokowania optymistycznego, nie trzeba ponawiać próby błędów.

Czy istnieje sposób na użycie blokowania tabel w doktrynie?

questionAnswers(3)

yourAnswerToTheQuestion