Einführung - Sequenzen

Einführung - Sequenzen – Sequenzen und Auto-Inkrements

Description

Sequenzen sind eine Möglichkeit eindeutige Identifer für Datensätze zu implementieren. Wenn Sie mit MySQL arbeiten, können Sie sich Sequenzen als eine andere Art des AUTO_INCREMENT-Mechanismus vorstellen.

Die Benutzung von Sequenzen ist einfach: Zuerst fragen Sie nach einem Identifier, dann fügen Sie den Wert in das entsprechende Feld eines neuen Datensatzes. Sie können mehr als eine Sequenzen für all Ihre Tabellen verwenden. Nur müssen Sie sich sicher sein, die jeweils gleiche Sequenz für die entsprechende Tabelle zu verwenden.

Um den Wert des eindeutigen Identifiers zu erhalten, benutzen Sie nextId(). Existiert die Sequenz noch nicht, wird sie erzeugt.

Die Sequenz wird automatisch inkrementiert, jedesmal, wenn nextId() aufgerufen wird.

Sequenz benutzen

<?php
// Once you have a valid DB object named $db...
$id $db->nextId('mySequence');
if (
PEAR::isError($id)) {
    die(
$id->getMessage());
}

// Use the ID in your INSERT query
$res =& $db->query("INSERT INTO myTable (id, text) VALUES ($id, 'foo')");
?>

Note

Wenn Sie die Sequenzen von PEAR::DB verwenden, müssen Sie diese von Beginn an durchgängig verwenden. Es ist nicht möglich die PEAR::DB-Sequenzen mit den eingebauten Sequenz-Mechanismen der DBMS zu nutzen.

Sollten Sie doch Gründe haben, diesen Rat zu ignorieren, dann beachten Sie, dass der Name der Sequenz im Parameter $seq_name der Sequenzmethoden modifiziert wird, bevor dass DBMS aufgerufen wird.

Der Parameter $seq_name wird der PHP-Funktion sprintf() übergeben, mit dem Wert der seqname_format-Option für das format-Argument der sprintf()-Funktion. Der Standardwert von seqname_format ist %s_seq. Z.B. wird die Sequenz person_id_sequence in $seq_name zu person_id_sequence_seq umgewandelt, wenn das DBMS angesprochen wird, um die Sequenz zu erzeugen bzw. darauf zuzugreifen oder zu ändern.

Das seqname_format kann während des Verbindngsaufbaus mit connect() verändert werden oder mit der setOption()-Methode.

Beachten Sie, dass Sie eventuell den Wert der Option seqname_format ändern müssen. Das ist dann der Fall, wenn der Sequenz-Name Zeichen, durch die der Name innerhalb von Anführungszeichen in einer SQL-Abfrage gesetzt werden muss. PostgreSQL-Anwender mit Tabellennamen in Großbuchstaben zum Beispiel, müssen den Wert ändern in "%s_seq" (beachten Sie die Anführungszeichen!), damit es funktioniert.

Funktionen zur Portabilität zwischen Datenbanken (Previous) Comparison of get* methods (Next)
Last updated: Sun, 19 Dec 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.