Heim > Datenbank > MySQL-Tutorial > Wie implementiert man die automatische Inkrementierung für eine sekundäre Primärschlüsselspalte in MySQL?

Wie implementiert man die automatische Inkrementierung für eine sekundäre Primärschlüsselspalte in MySQL?

DDD
Freigeben: 2024-12-13 16:16:11
Original
834 Leute haben es durchsucht

How to Implement Auto-Increment on a Secondary Primary Key Column in MySQL?

Auto-Inkrementierung für eine sekundäre Primärschlüsselspalte in MySQL erreichen

In Situationen, in denen die Aufrechterhaltung der Datenintegrität von entscheidender Bedeutung ist, kann die Verwendung von zwei Spalten als Primärschlüssel geeignet sein Ansatz. Es kann jedoch zu Herausforderungen kommen, wenn versucht wird, die automatische Inkrementierung für eine der Spalten basierend auf einem bestimmten Wert in der anderen festzulegen.

Für MySQL-Benutzer gibt es zwei Optionen, die bei der Lösung dieses Problems in Betracht gezogen werden sollten:

Verwenden der MyISAM-Engine mit AUTO_INCREMENT

Für Tabellen mit der MyISAM-Engine können Sie das AUTO_INCREMENT-Attribut für eine sekundäre Spalte nutzen innerhalb eines mehrspaltigen Index. Der automatische Inkrementierungswert für die sekundäre Spalte wird wie folgt berechnet:

MAX(auto_increment_column) + 1 WHERE prefix=given-prefix
Nach dem Login kopieren

Mit dieser Technik können Sie Daten basierend auf dem Wert in der Präfixspalte in geordnete Sätze gruppieren.

Zum Beispiel :

Betrachten Sie die folgende Tabelle mit dem Namen „mytable“ mit zwei Primärschlüsselspalten, „database_id“ und „database_id“. table_id:

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

Durch das Einfügen von Daten in mytable wird die table_id automatisch für jeden eindeutigen Datenbank-ID-Wert erhöht:

INSERT INTO mytable (database_id, other_column) VALUES
(1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
Nach dem Login kopieren

Wenn Sie Daten aus der Tabelle abrufen, werden die Zeilen basierend auf sortiert Sowohl die Datenbank-ID- als auch die Tabellen-ID-Spalte:

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          |
+----------+-------------+--------------+
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man die automatische Inkrementierung für eine sekundäre Primärschlüsselspalte in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage