Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Sequenzspalte basierend auf einem Fremdschlüssel 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!