![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 2.04.2010 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
wydaje mi się, że moje pytanie jest banalnie proste, ale mój mózg już chyba dzisiaj przestał pracować, nawet nie wiem jak szukać rozwiązania. Praca inżynierska goni... Mianowicie: Sprawdzam czy istnieje rekord w bazie, jeżeli nie istnieje to tworzę nowy. Podczas przytrzymania F5 rekordów dodaje się kilka. Klucz unique w bazie nie wchodzi w grę.
Dodam tylko, że User i JakisItem są połączone relacją One to Many, a metoda jakis_item() klasy User zwraca pojedynczy obiekt Eloquenta. Chodzi mi o to żeby każdy użytkownik miał ZAWSZE minimum jeden JakisItem, który może, np zmienić właściciela i wtedy chcę utworzyć nowy. Kod powyżej wykonuje się po każdym odświeżeniu strony i sprawdza czy ten item nie zniknął (jest w konstruktorze kontrolera). Podczas tworzenia użytkownika w metodzie postRegister klasy kontrolera AuthController tworzę rekord tak jak powyżej. Jeśli jest na to jakiś lepszy sposób bardzo proszę o nakierowanie na niego. Pozdrawiam! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witamy w świecie współbieżności. ;-)
Przyczynę już właściwie sam zdiagnozowałeś. Dwa równoległe żądania sprawdzają w tym samym czasie czy coś istnieje, a dopiero później dodają jakieś dane. Rozwiązanie? Obie instrukcje objęte transakcją (http://www.postgresql.org/docs/9.4/static/sql-start-transaction.html) z odpowiednio wysokim poziomem izolacji (http://www.postgresql.org/docs/9.1/static/transaction-iso.html). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 19:11 |