sql >> Database >  >> RDS >> Oracle

Wat moet ik gebruiken in plaats van volgorde om hiaten te voorkomen?

Het belangrijkste doel van sequenties is om een ​​bron van gegarandeerde . te bieden unieke identificatiecodes. Dit zijn technische sleutels en in het algemeen zou hun werkelijke waarde niet relevant moeten zijn. Ik bedoel - moet je zelfs het mapnummer aan de gebruiker laten zien?

Als je daar last van hebt, gebruik dan NOCACHE. Dat minimaliseert de hiaten die u ziet, en zolang u niet vaak mappen maakt, zult u de prestatiehit niet opmerken door het niet opslaan van een handvol slappe nummers. U kunt nog steeds hiaten krijgen als een transactie wordt teruggedraaid of om een ​​andere reden mislukt, maar deze zouden zeldzaam moeten zijn; als dat niet het geval is, heeft u grotere zorgen dan de nummering van uw mappen!

Andere manieren om een ​​monotoon oplopende reeks te genereren zijn ofwel omslachtig om te implementeren (triggers over codecontroletabellen) of niet gegarandeerd uniek te zijn (met behulp van max(id)+1 in een trigger). Als u een codecontroletabel wilt gebruiken - dat is een tabel die specifiek de laatst toegewezen map-ID bijhoudt - moet u eens kijken op een eerder antwoord schreef ik die moet hoe een te implementeren. Het enige voordeel van een codecontroletabel is dat we met een groep tellingen kunnen bijhouden. U kunt dus een reeks map-ID's voor elke gebruiker hebben en deze afzonderlijk verhogen.



  1. Waarom Foreign Key-beperkingen gebruiken in MySQL?

  2. UPDATE of INSERT MySQL Python

  3. *ALERT* Kan geen databasefout meer openen met Microsoft Office build 2201

  4. Queryresultaten retourneren als een door komma's gescheiden lijst in PostgreSQL