Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine Spalte in einem mehrspaltigen Primärschlüssel automatisch erhöhen?

Wie kann ich eine Spalte in einem mehrspaltigen Primärschlüssel automatisch erhöhen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 08:11:10717Durchsuche

How Can I Auto-Increment a Column in a Multi-Column Primary Key?

Auto-Inkrementierung für einen mehrspaltigen Primärschlüssel verwenden

Die Aufrechterhaltung der Datenintegrität über Datenbanken hinweg kann eine Herausforderung sein. Durch die Verwendung von zwei Spalten als zusammengesetzter Primärschlüssel können Sie die Eindeutigkeit jeder Zeile sicherstellen. Es ist jedoch wichtig zu überlegen, wie die eindeutige Identifizierung von Zeilen verwaltet werden soll, wenn eine der Spalten automatisch inkrementiert wird.

Die Verwendung von AUTO_INCREMENT in MyISAM

Die MyISAM-Speicher-Engine ermöglicht Ihnen um AUTO_INCREMENT für eine nicht-primäre Spalte in einem mehrspaltigen Index anzugeben. Der Wert für die automatische Inkrementierung wird als MAX(auto_increment_column) 1 berechnet, wenn ein bestimmtes Präfix übereinstimmt. Dies ist besonders nützlich, wenn Daten in geordnete Gruppen organisiert werden.

Beispielverwendung:

CREATE TABLE animals (
    grp ENUM('fish','mammal','bird') NOT NULL,
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    name CHAR(30) NOT NULL,
    PRIMARY KEY (grp,id)
) ENGINE=MyISAM;

In diesem Beispiel wird die ID basierend auf dem Wert von grp automatisch inkrementiert .

Anwenden auf Ihr Beispiel:

Für Ihr spezifisches Anforderung können Sie die folgende Tabellenstruktur erstellen:

CREATE TABLE mytable (
    table_id MEDIUMINT NOT NULL AUTO_INCREMENT,
    database_id MEDIUMINT NOT NULL,
    other_column CHAR(30) NOT NULL,
    PRIMARY KEY (database_id,table_id)
) ENGINE=MyISAM;

Beispieldaten und Ergebnisse:

INSERT INTO mytable (database_id, other_column) VALUES
    (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
SELECT * FROM mytable ORDER BY database_id,table_id;

+----------+-------------+--------------+
| table_id | database_id | other_column |
+----------+-------------+--------------+
|        1 |           1 | Foo          |
|        2 |           1 | Bar          |
|        3 |           1 | Bam          |
|        1 |           2 | Baz          |
|        2 |           2 | Zam          |
|        1 |           3 | Zoo          |
+----------+-------------+--------------+

Wie Sie sehen können, ist table_id automatisch -inkrementiert für jede eindeutige Datenbank-ID. Dies gewährleistet sowohl die Einzigartigkeit jeder Zeile als auch die geordnete Gruppierung von Zeilen basierend auf der Datenbank-ID.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Spalte in einem mehrspaltigen Primärschlüssel automatisch erhöhen?. 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