MySQL : Etablir une colonne de séquence dépendante d'un champ étranger
Dans le domaine de la gestion de bases de données, il devient parfois impératif de modifier l'existant structures pour répondre aux nouvelles exigences en matière de données. Tel est le cas lorsqu'un numéro de séquence doit être attribué aux enregistrements en fonction d'une clé étrangère spécifique.
Considérez une table avec les colonnes ID, ACCOUNT et some_other_stuff. L'objectif est d'introduire une nouvelle colonne, SEQ, qui s'incrémente de manière unique pour chaque valeur de COMPTE distincte, comme ceci :
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 basée sur SQL :
MySQL nous donne des déclencheurs, un mécanisme puissant pour exécuter automatiquement des actions prédéfinies lors d'événements de manipulation de données. Dans ce cas, un déclencheur peut être utilisé pour remplir la colonne SEQ avec les valeurs appropriées lors de l'insertion de l'enregistrement. Le code du déclencheur :
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;
Répartition :
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!