Introduction - Séquences

Introduction - Séquences – Séquences et auto-incrémentation

Description

Les séquences sont une façon d'offrir des identifiants uniques pour les enregistrements. Si vous travaillez principalement avec MySQL, pensez que les séquences sont une autre façon de réaliser la tâche d'AUTO_INCREMENT.

C'est relativement simple, d'abord vous demandez un identifiant et vous insérez sa valeur dans le champ ID du nouvel enregistrement que vous créez. Vous pouvez avoir plus d'une séquence pour toutes vos tables, soyez juste sûrs de toujours utiliser la même séquence pour une table donnée. Pour obtenir la valeur de l'identifiant unique utilisez nextId(), si une séquence n'existe pas elle sera créée automatiquement.

La séquence est automatiquement incrémentée à chaque appel à la fonction nextId().

Utiliser une séquence

<?php
// On suppose que vous avec un objet DB valide nommé $db
$id $db->nextId('mySequence');
if (
PEAR::isError($id)) {
    die(
$id->getMessage());
}

// Utilisez l'identifiant dans votre requête
$res =& $db->query("INSERT INTO myTable (id, text) VALUES ($id, 'foo')");
?>

Note

Lorsque vous utilisez les méthodes de séquence PEAR DB, vous êtes vivement invité à utiliser ces méthodes pour toutes les procédures, y compris la création des séquences. N'utilisez pas les méthodes PEAR DB pour accéder aux séquences qui ont été créée directement dans le DBMS.

Si vous avez une bonne raison pour ignorer cet avertissement, faites attention que les arguments $seq_name donnés à toutes les méthodes de séquences PEAR DB sont modifiés avant que DB n'appelle le DBMS fondamental.

$seq_name est passé via la fonction PHP sprintf() en utilisant la valeur de l'option seqname_format en tant qu'argument de format de la fonction sprintf(). Le format de séquence par défaut seqname_format est %s_seq. Donc, par exemple, si vous utilisez person_id_sequence en tant que $seq_name , PEAR DB modifira ce nom en person_id_sequence_seq lors de l'envoi des requêtes au DBMS pour créer/accéder/mettre à jour la séquence.

seqname_format peut être modifié lors de l'utilisation de la fonction connect() ou via la fonction setOption().

Notez que vous devriez modifier l'option seqname_format pour représenter une forme quottée du nom de la séquence si les noms de séquence contiennent des caractères qui ne devront pas être non quottés dans les requêtes. Par exemple, les utilisateurs de PostgreSQL dont les tables sont en majuscule devront probablement utiliser la notation "%s_seq" (notez les guillemets) pour les requêtes, afin qu'elles fonctionnent comme prévues.

Portabilité de base de données (Previous) Comparison of get* methods (Next)
Last updated: Sun, 29 Aug 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.