sql >> Database teknologi >  >> RDS >> Oracle

Hvordan genbruger jeg Oracle-sekvenshuller i primærnøglekolonnen?

Mener du, vil sekvensen nogensinde returnere en værdi, der er i et "gab"-interval? Det tror jeg ikke, medmindre du dropper/genskaber det af en eller anden grund. Jeg gætter på, at du kunne skrive en funktion af en eller anden slags for at finde PK-hullerne i din tabel, og derefter gemme disse mellemrumsintervaller til en anden tabel og "rulle" din egen sekvensfunktion ved hjælp af mellemrumstabellen. Meget grim. At forsøge at "genoprette" disse huller lyder bare som et desperat forsøg på at undgå det uundgåelige - din java PK-datatype burde have justeret med DB-datatypen. Jeg havde det samme problem for længe siden med en VB-app, der havde en klassenøgle defineret som 16-bit heltal, og sekvensen oversteg 32K, måtte ændre variablerne til en Long. Jeg siger, bid i det klode, og lav omstillingen. Lidt smerte nu, vil spare dig for mange vedvarende smerter senere. Bare min mening.



  1. PostgreSQL – Sådan fjerner du gentagne værdier

  2. Få en liste over alle funktioner og procedurer i en Oracle-database

  3. Sådan udføres denne Oracle-sætning på JDBC

  4. Kan ikke bruge et CONTAINS eller FREETEXT prædikat på tabel eller indekseret visning, fordi det ikke er fuldtekstindekseret