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
DDDOriginal
2024-12-13 16:16:11830Durchsuche

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

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;

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');

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          |
+----------+-------------+--------------+

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!

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