Mailinglisten-Archive |
Hallo Heiko, hallo Liste,
Heiko Schubert schrieb:
> ich verwende phplib 7.2c unter php 4.0.2 und möchte die ID
> herausbekommen, die beim letzten INSERT in die mySQL-Datenbank erzeugt
> worden ist:
Die ist in der Tat nicht direkt über die
PHPlib erreichbar, und das ist sogar Absicht .
Das Feature Autoincrement ist nicht in allen
Datenbanken vorhanden, und kann auch nicht überall
durch etwas anderes emuliert werden.
Da das Datenbankabstraktionslayer der PHPlib
als Hauptaufgabe die Austauschbarkeit der dahinter-
liegenden Datenbank erreichen will, wäre also
eine Bedienung dieser speziellen Datenbank-
funktionalitäten ein Hindernis.
Deshalb wurde es so gelöst:
Die PHPlib legt bei normaler Konfiguration
die Tabelle db_sequence an, die für alle
eindeutigen, dh. als Datenbankindex nutzbaren
Counter zuständig ist.
In ihr wird jeweils ein eindeutiger Name
eines Counters und der dazugeörige aktuelle
Stand abgelegt.
Das Interface zu diesem einfachen Sequencen-
Handling ist einfach:
mit $neueid = $meinedbklasse->next_id("Countername");
läßt sich eine neue ID erzeugen, die man dann ohne
Probleme im INSERT-Statement benutzen kann.
Implikationen:
Die Tabelle db_sequence beinhaltet Informationen
über die anderen Tabellen, nämlich den aktuellen
Zählerstand in den Indexfeldern dort, eine
Leistung, für die MySQL mit auto_increment selbst
gesorgt hätte . Will man die Tabellen einer
Datenbank also auf einen anderen Server wandern, so
müssen auch die db_sequence bzw. alle zu den Tabellen
gehörigen Zählerstände dort vorhanden sein.
Diese Zählerstände lassen sich so aber auch
auf einem anderen Datenbanksystem nutzen,
und damit haben wir wieder die Datenbankabstraktion,
die wir mit auto_increment nicht hätten.
Grüße, johann
php::bar PHP Wiki - Listenarchive