sql >> Databasteknik >  >> RDS >> Oracle

Gapfri sekvens där flera transaktioner med flera tabeller är inblandade

Som du redan har verkat dra slutsatsen, skalas sekvenser utan gap helt enkelt inte. Antingen riskerar du att tappa värden när en återställning inträffar, eller så har du en serialiseringspunkt som kommer att förhindra att ett system för samtidiga transaktioner med flera användare skalas. Du kan inte ha båda.

Min tanke skulle vara, vad sägs om en efterbearbetningsåtgärd, där du varje dag har en process som körs i slutet av affären, letar efter luckor och numrerar om allt som behöver numreras om?

En sista tanke:Jag känner inte till ditt krav, men jag vet att du sa att detta är "krävs enligt lag". Tja, fråga dig själv, vad gjorde folk innan det fanns datorer? Hur skulle detta "krav" uppfyllas? Förutsatt att du har en bunt tomma formulär som kommer förtryckta med ett "sekvensnummer" i det övre högra hörnet? Och vad händer om någon spiller kaffe på den blanketten? Hur hanterades det? Det verkar som om du behöver en liknande metod för att hantera det i ditt system.

Hoppas det hjälper.



  1. %ROWTYPE variabel från tabellnamn

  2. Utlösare för att visa meddelande med PL/SQL

  3. SQL-fel:'database.table.field finns inte i GROUP BY

  4. sql-injektion i ERROR 1062 (23000):Duplicate entry?