Oracle
 sql >> Base de données >  >> RDS >> Oracle

Que dois-je utiliser à la place de la séquence afin d'éviter les lacunes ?

Le but principal des séquences est de fournir une source de garantie identifiants uniques. Ce sont des clés techniques et, d'une manière générale, leur valeur réelle ne devrait pas être pertinente. Je veux dire - avez-vous même besoin de montrer le numéro de dossier à l'utilisateur ?

Si cela vous dérange, utilisez NOCACHE. Cela minimisera les écarts que vous voyez, et tant que vous ne créez pas de dossiers très souvent, vous ne remarquerez pas l'impact sur les performances de ne pas mettre en cache une poignée de chiffres lâches. Vous pouvez toujours avoir des lacunes, si une transaction est annulée ou échoue pour toute autre raison, mais elles devraient être peu fréquentes ; si ce n'est pas le cas, vous avez plus de soucis que la numérotation de vos dossiers !

D'autres façons de générer une série à incrémentation monotone sont soit fastidieuses à mettre en œuvre (déclencheurs sur les tables de contrôle du code), soit non garanties d'être uniques (en utilisant max(id)+1 dans un déclencheur). Si vous souhaitez utiliser une table de contrôle de code - c'est-à-dire une table qui suit spécifiquement le dernier ID de dossier attribué - vous devriez jeter un coup d'œil à une réponse précédente, j'ai écrit qui devrait comment faire mettre en œuvre un. Le seul avantage d'une table de contrôle de code est que nous pouvons maintenir les décomptes avec un groupe. Ainsi, vous pouvez avoir une série d'identifiants de dossier pour chaque utilisateur et les incrémenter indépendamment.