Schlüssel erzeugen
Es ist lästig, bei der Eingabe eines neuen Schülers selbst einen künstlichen Primärschlüssel zu suchen, der ja eindeutig sein muss.
Das folgende Programm (hier zum Download) erzeugt automatisch die nächste freie Nummer für einen neuen Fahrschüler:
Das Programm wird in den allermeisten Fällen funktionieren. Allerdings gibt es Probleme, wenn zwei oder mehrere Benutzer gleichzeitig einen Benutzer einfügen wollen:
Beide Benutzer lesen nacheinander die höchste vergebene Nummer aus und erhöhen diese um 1. Beim Einfügen verwenden damit beide die gleiche Nummer, was beim Benutzer mit dem späteren Commit zu einer Fehlermeldung führen muss.
Alternative in MySQL
MySQL (und auch andere Datenbanksysteme) bieten für dieses Problem der Schlüsselgenerierung eigene (und leider auch unterschiedliche Lösungen). Unter MySQL kann bei einem Attribut die Anweisung AUTO_INCREMENT
ergänzt werden:
Wird dann bei einem INSERT der Wert für SNR
nicht definiert, dann erzeugt MySQL automatisch einen Wert (den maximal vorhandenen Wert +1).
SQLite verhält sich hier sehr "benutzerfreundlich" - und nicht im SQL-Standard:
Ist ein Attribut (wie hier die SNR) vom Typ integer
und als Primärschlüssel markiert, so vergibt SQLite automatisch einen unbenutzten Wert für SNR, sofern die SNR im INSERT nicht angegeben wird.
Quellen
- [1]: Konkurrierende Zugriffe - Urheber: TM - Lizenz: inf-schule.de