Entity Framework autonumeracja w bazie (bez identity)

0

Mam taki problem,

Przykladowa tabela ma kolumny ID, NUMER, NAZWA, jak zrobic (jaki jest na to najlepszy sposob) aby NUMERacja (w kolumnie NUMER) byla prawidlowa tzn, zebym w bazie mial NUMERy zawsze pokolei bez zadnych przerw? Obecnie sprawdzam sobie ostatni zapisany numer i dodaje do niego 1, ale nie podoba mi sie to rozwiazanie i na pewno beda problemy gdy kilku uzytkownikow w tym samym czasie bedzie probowalo dodac rekord do bazy (duplikaty).

0

Może trigger na tabeli

1

osobna tabela z aktualnym numerem i w momencie zapisu robisz tak

  1. start transakcji
  2. blokada tabeli z numerami (np. tak SELECT numer FROM numery FOR UPDATE NO WAIT)
  3. wstawienie rekordu z numer + 1 (z pkt. 2)
  4. zaktualizowanie numeru w tabelce z numerami
  5. zatwierdzenie transakcji

Jeśli pkt. 2 zwróci błąd znaczy, że ktoś inny właśnie dodaje rekord i trzeba powtórzyć za chwilę.

Jeśli numer ma być unikalny i kolejny to nie ma innego sposobu, a próba wstawienia MAX(numer) + 1 prędzej czy później będzie skutkował dublami

0

To co @abrakadaber napisał plus problem z renumeracją w przypadku usunięcia rekordu. Dlatego usuwanie rekordów to ZŁO :) W szczególności jak masz jeszcze jakieś wydruki z tymi numerami.

0

brzmi ciekawie, potestuje wieczorem, dzieki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1