Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Sequenzspalte basierend auf einem Fremdschlüssel in MySQL?

Wie erstelle ich eine Sequenzspalte basierend auf einem Fremdschlüssel in MySQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-28 11:47:11743Durchsuche

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

MySQL: Sequenzspalte basierend auf Fremdschlüssel generieren

In einer Legacy-Datenbank das Hinzufügen einer Sequenzspalte, die eine numerische Reihenfolge für jeden Fremdschlüssel aufzeichnet Der Schlüssel kann das Abrufen und Organisieren von Daten verbessern. Angenommen, Sie haben die folgende Tabelle:

ID ACCOUNT some_other_stuff
1 1 ...
2 1 ...
3 1 ...
4 2 ...
5 2 ...
6 1 ...

Das Ziel besteht darin, eine SEQ-Spalte zu erstellen, die für jedes KONTO separat erhöht wird. Dies würde zu der folgenden Tabelle führen:

ID ACCOUNT SEQ some_other_stuff
1 1 1 ...
2 1 2 ...
3 1 3 ...
4 2 1 ...
5 2 2 ...
6 1 4 ...

Um dies zu erreichen, können Sie einen SQL-Trigger verwenden:

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;

Dieser Trigger stellt sicher, dass jede neue Zeile, die in die Mytable-Tabelle eingefügt wird, erhalten wird eine eindeutige Sequenznummer basierend auf dem zugehörigen KONTO.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Sequenzspalte basierend auf einem Fremdschlüssel in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn