MySQL : Génération d'une colonne de séquence basée sur une clé étrangère
Dans une base de données existante, ajout d'une colonne de séquence qui enregistre un ordre numérique pour chaque clé étrangère La clé peut améliorer la récupération et l’organisation des données. Supposons que vous ayez le tableau suivant :
ID | ACCOUNT | some_other_stuff |
---|---|---|
1 | 1 | ... |
2 | 1 | ... |
3 | 1 | ... |
4 | 2 | ... |
5 | 2 | ... |
6 | 1 | ... |
L'objectif est de créer une colonne SEQ qui s'incrémente séparément pour chaque COMPTE. Cela donnerait le tableau suivant :
ID | ACCOUNT | SEQ | some_other_stuff |
---|---|---|---|
1 | 1 | 1 | ... |
2 | 1 | 2 | ... |
3 | 1 | 3 | ... |
4 | 2 | 1 | ... |
5 | 2 | 2 | ... |
6 | 1 | 4 | ... |
Pour y parvenir, vous pouvez utiliser un déclencheur SQL :
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 garantit que chaque nouvelle ligne insérée dans la table mytable obtient un numéro de séquence unique basé sur le COMPTE associé.
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!