Que diriez-vous d'une table spécifique juste à cet effet?
create table AvailableSerialNumbers (
AvailableOn datetime primarykey,
NextAvailableNumber int
)
Il faudrait remplir à l'avance, mais c'est assez simple (automatiquement et ne pas faire que cela se fait manuellement).
Notez que si vous avez créé un grand nombre d'enregistrements de numéros de série en même temps, la logique de création goulot sera bloquée lors de la mise à jour de l'enregistrement AvailbleSerialNumbers. La solution la plus simple à ce problème est de définir plusieurs enregistrements AvailableSerialNumbers par jour (disons 100) et de choisir au hasard 1 à mettre à jour. Si vous utilisez cette approche à la place d'un champ "NextAvailableNumber", il doit s'agir d'une plage from/to. Lorsque la plage atteint 0, supprimez l'enregistrement de plage.
Quel est le problème avec les numéros de série normaux (en augmentation monotone)? – kmkaplan
Ceci est pour un certificat qui contient une date + un numéro de série. Étant donné que la date change toutes les quelques heures, je n'ai pas besoin d'un emplacement aussi grand pour le numéro de série. J'essaie de conserver tous les caractères. –
La plupart des systèmes de base de données ont un mécanisme de séquence que vous pouvez réinitialiser à 0. Quel est votre système de base de données? – kmkaplan