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