Πάντως, για να κλείσουμε, αν θέλεις να υλοποιήσεις έναν δικό σου μηχανισμό για auto increment, θα πρέπει να φτιάξεις έναν πίνακα που να κρατάει για κάθε πεδίο που θα παίζει με αυτόν τον μηχανισμό και από μία εγγραφή. Μπορείς με αυτόν τον τρόπο να διαβάζεις ποιά είναι η τελευταία τιμή που έχει μπεί.
Ωστόσο έχεις διάφορα θέματα για να προσέξεις. Μερικά από αυτά είναι: Σε ένα πολυχρηστικό περιβάλλον ενδέχεται και άλλοι να έχουν ζητήσει να μάθουν ποιά είναι η τελευταία τιμή ώστε να χρησιμοποιήσουν την επόμενη. Επίσης, τι θα γίνεται αν ένας χρήστης ακυρώσει την εισαγωγή; Θα πρέπει η εισαγωγή του προϊόντος μαζί με το update της εγγραφής που δείχνει στο τελευταίο ID να γίνεται σε ένα κοινό transaction. Ο πίνακας αυτός δε, μπορεί να αποτελέσει ένα hot-spot για την εφαρμογή σου, δηλαδή λόγω του locking που θα συμβαίνει σε αυτόν, να φρενάρει ολόκληρη την εφαρμογή.
Γι αυτό θεωρώ ότι είναι προτιμότερο να ορίσεις ένα surrogate key και να αφήσεις τους χρήστες να βάζουν ό,τι κλειδί θέλουν. Εξάλλου μπορείς να τους ορίσεις κάποιο guideline ώστε να κωδικοποιήσουν τα κλειδιά με τέτοιο τρόπο που να σχετίζονται με το προϊόν.
Vir prudens non contra ventum mingit