Création de colonnes basées sur une séquence dans MySQL
Dans les systèmes de bases de données existants, il est souvent nécessaire d'ajouter de nouvelles colonnes pour suivre des informations supplémentaires. Lorsque ces informations doivent être séquentielles pour des enregistrements spécifiques, les déclencheurs SQL peuvent fournir une solution efficace.
Cible : ajout d'une colonne de séquence basée sur un identifiant étranger
Disons que vous avez un table avec des données telles que :
ID ACCOUNT some_other_stuff 1 1 ... 2 1 ... 3 1 ... 4 2 ... 5 2 ... 6 1 ...
Et vous souhaitez ajouter une colonne 'sequenceid' qui s'incrémente séparément pour chaque 'compte', ce qui donne :
ID ACCOUNT SEQ some_other_stuff 1 1 1 ... 2 1 2 ... 3 1 3 ... 4 2 1 ... 5 2 2 ... 6 1 4 ...
Solution : Utilisation de déclencheurs SQL
Pour y parvenir automatiquement en SQL, vous pouvez créer un déclencheur qui se déclenche avant chaque opération INSERT sur la table :
CREATE TRIGGER trg_mytable_bi BEFORE INSERT ON mytable FOR EACH ROW BEGIN DECLARE nseq INT; SELECT COALESCE(MAX(seq), 0) + 1 INTO nseq FROM mytable WHERE account = NEW.account; SET NEW.seq = nseq; END;
Ce déclencheur initialise une variable locale ' nseq' pour contenir la valeur séquentielle suivante. Il interroge la table pour trouver le numéro de séquence maximum existant pour le « compte » actuel, en ajoutant 1 pour générer la valeur de séquence suivante. Cette valeur est ensuite définie comme valeur « seq » pour la ligne nouvellement insérée.
En utilisant un déclencheur, les numéros de séquence sont automatiquement générés et incrémentés pendant le processus d'insertion, garantissant que chaque compte a sa propre séquence unique. de chiffres. Cette approche élimine le besoin de mises à jour manuelles ou de scripts PHP complexes pour maintenir la séquence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!