Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czego powinienem użyć zamiast sekwencji, aby uniknąć luk?

Głównym celem sekwencji jest zapewnienie źródła gwarantowanej unikalne identyfikatory. Są to klucze techniczne i ogólnie rzecz biorąc ich rzeczywista wartość nie powinna mieć znaczenia. To znaczy – czy musisz w ogóle pokazać użytkownikowi numer folderu?

Jeśli Ci to przeszkadza, użyj NOCACHE. To zminimalizuje luki, które widzisz, i tak długo, jak nie tworzysz folderów bardzo często, nie zauważysz spadku wydajności wynikającego z braku buforowania garści liczb. Nadal możesz otrzymać luki, jeśli transakcja zostanie wycofana lub nie powiedzie się z jakiegokolwiek innego powodu, ale powinny one występować rzadko; jeśli tak nie jest, masz większe zmartwienia niż numeracja folderów!

Inne sposoby generowania monotonicznie rosnącej serii są albo kłopotliwe do zaimplementowania (wyzwalacze przez tabele kontrolne kodu), albo nie mają gwarancji, że będą unikalne (przy użyciu max(id)+1 w spuście). Jeśli chcesz użyć tabeli kontrolnej kodu — to jest tabeli, która w szczególności śledzi ostatni przypisany identyfikator folderu — powinieneś zajrzeć do w poprzedniej odpowiedzi, którą napisałem który powinien jak to zrobić. Jedyną zaletą tabeli sterującej kodu jest to, że możemy utrzymywać liczenia w grupie. Możesz więc mieć szereg identyfikatorów folderów dla każdego użytkownika i niezależnie je zwiększać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks czasu stałego dla kolumny ciągu w bazie danych Oracle

  2. Oracle otrzymuje 1 godzinę wsteczną datę

  3. ORA-24247 podczas wysyłania przez FTP

  4. Jak wywołać anonimowy blok pl/sql z anonimowego bloku pl/sql?

  5. Korzystanie z usługi internetowej i wstawianie CLOB przy użyciu Node.js do tabeli bazy danych Oracle