dedlfix: Datentyp und Primärschlüssel

Beitrag lesen

Hi!

wie stell ich ein wie hochgezaehlt wird?
gar nicht. Du bist selbst dafür verantwortlich, geeignete Inhalte zu verwenden.
Bei MySQL könntest Du zum Beispiel die Funktion UUID() verwenden. Und ja, sowas Nettes wie LAST_INSERT_ID() gibt's dafür nicht.

Das ist auch nicht notwendig, denn eine UUID/GUID hat den Vorteil, dass sie prinzipell auf einem beliebigen Rechner erzeugt werden kann und dabei weltweit eindeutig bleibt. Man muss also eine UUID nicht erst im DBMS erzeugen, und sie dann hinterher abfragen, man kann sie auch gleich im Anwendungsprogramm erzeugen, damit schon Verknüpfungen zu anderen Objekten (im OOP-Sinne oder auch im allgemeinen) erstellen, und so weiter.

Wenn man nun solche UUID-Datensätze in das DBMS bringen möchte, macht man entweder auf Verdacht ein INSERT und prüft dabei auf Primärschlüsselverletzungsfehler, woraufhin man ein UPDATE nachschiebt. Dieses Vorgehen empfiehlt sich für Prozesse, die in der Regel einen Datensatz hinzufügen. Für vorwiegend ändernde Prozesse kann man es andersrum angehen, indem man ein UPDATE macht, die Affected Rows prüft und gegebenenfalls ein INSERT hinterherschiebt. Für die Affected Rows muss man aber die Wirkung das Flag CLIENT_FOUND_ROWS berücksichtigen, das sich mit PHP nur unter Verwendung von mysqli_real_connect() beeinflussen lässt.

Lo!