Oracle
 sql >> база данни >  >> RDS >> Oracle

Какво трябва да използвам вместо последователност, за да избегна пропуски?

Основната цел на последователностите е да осигурят източник на гарантирано уникални идентификатори. Това са технически ключове и най-общо казано тяхната действителна стойност не би трябвало да е от значение. Искам да кажа - трябва ли изобщо да показвате номера на папката на потребителя?

Ако сте толкова притеснени, използвайте NOCACHE. Това ще сведе до минимум пропуските, които виждате, и докато не създавате папки много често, няма да забележите влошаване на производителността от липсата на кеширане на слаби шепа числа. Все още може да получите пропуски, ако дадена транзакция бъде отменена или е неуспешна поради някаква друга причина, но те трябва да са редки; ако не са, трябва да се тревожите за по-големи неща от номерирането на вашите папки!

Други начини за генериране на монотонно нарастваща поредица са или тромави за прилагане (задействания върху таблици за управление на код), или не е гарантирано, че са уникални (използвайки max(id)+1 в спусъка). Ако искате да използвате таблица за контрол на код - това е таблица, която конкретно проследява последния присвоен идентификатор на папка - трябва да погледнете в предишен отговор, който написах което трябва как да се приложи. Едното предимство на таблицата за контрол на кода е, че можем да поддържаме броя с група. Така че можете да имате набор от идентификатори на папки за всеки потребител и да ги увеличавате независимо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване между визуален и оракул

  2. Най-новият доставчик на данни на Oracle за .NET (11.2.0.3.20) прекъсва EF Update Wizard

  3. нула за NUMBER_ARRAY не работи

  4. SQL за игнориране на редове, които имат определено свойство от обединена таблица

  5. Oracle:Concat с разделител, но само ако и двата операнда НЕ са NULL