Entity Framework autonumeracja w bazie (bez identity)

Entity Framework autonumeracja w bazie (bez identity)
  • Rejestracja: dni
  • Ostatnio: dni
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).

  • Rejestracja: dni
  • Ostatnio: dni
0

Może trigger na tabeli

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
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

JP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1065
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

brzmi ciekawie, potestuje wieczorem, dzieki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.