Maison > base de données > tutoriel mysql > Comment générer une colonne de séquence basée sur une clé étrangère dans MySQL ?

Comment générer une colonne de séquence basée sur une clé étrangère dans MySQL ?

Patricia Arquette
Libérer: 2024-11-28 11:47:11
original
788 Les gens l'ont consulté

How to Generate a Sequence Column Based on a Foreign Key in MySQL?

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal