phpbar.de logo

Mailinglisten-Archive

[php] phplib: last_update_id

[php] phplib: last_update_id

Johann-Peter Hartmann hartmann_(at)_freecharts.de
Sun, 8 Oct 2000 14:47:25 +0200


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