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!