Heim > Datenbank > MySQL-Tutorial > Kann ich den Primärschlüssel in MySQL ändern, während ein automatisch inkrementierendes Feld funktionsfähig bleibt?

Kann ich den Primärschlüssel in MySQL ändern, während ein automatisch inkrementierendes Feld funktionsfähig bleibt?

Barbara Streisand
Freigeben: 2024-10-29 19:18:02
Original
607 Leute haben es durchsucht

Can I Modify the Primary Key in MySQL While Keeping an Auto-Incrementing Field Functional?

MySQL-Primärschlüsseländerung: Ausbalancieren von automatischer Inkrementierung und Abfrageeffizienz

Beim Definieren einer Tabelle in MySQL entsteht eine häufige Herausforderung, wenn versucht wird, Felder mit automatischer Inkrementierung zu kombinieren einen weiteren Schlüssel als Primärschlüssel. In diesem Artikel geht es um die Frage, wie dies erreicht werden kann und gleichzeitig die optimale Leistung und Zugänglichkeit von Bezeichnern erhalten bleibt.

Das bereitgestellte Tabellenbeispiel enthält ein automatisch inkrementierendes ID-Feld und ein eindeutiges Member-ID-Feld, das zur Identifizierung von Mitgliedern in Abfragen verwendet wird. Es stellt sich die Frage, wie die Member-ID als Primärschlüssel eingerichtet werden kann und gleichzeitig die automatische Inkrementierungsfunktion des ID-Felds erhalten bleibt.

Der Fehler „1075 – Falsche Tabellendefinition; es kann nur eine automatische Spalte geben und diese muss definiert werden.“ als Schlüssel“ gibt an, dass MySQL erfordert, dass die automatisch inkrementierende Spalte als Schlüssel definiert wird. Um dieses Problem zu beheben, muss dem ID-Feld ein Index (Schlüssel) hinzugefügt werden.

Die folgende geänderte Tabellendefinition behebt das Problem:

CREATE TABLE members (
  id int(11)  UNSIGNED NOT NULL AUTO_INCREMENT,
  memberid VARCHAR( 30 ) NOT NULL ,
  `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  firstname VARCHAR( 50 ) NULL ,
  lastname VARCHAR( 50 ) NULL ,
  PRIMARY KEY (memberid),
  KEY (id)                          --- or:    UNIQUE KEY (id)
) ENGINE = MYISAM;
Nach dem Login kopieren

Durch die Erstellung eines Index für das ID-Feld wird MySQL kann Datensätze mithilfe des Felds „id“ oder „memberid“ effizient finden. Diese Lösung stellt sicher, dass die Leistung von Abfragen mit der Mitglieds-ID nicht beeinträchtigt wird, während die Vorteile eines automatisch inkrementierenden ID-Felds erhalten bleiben.

Daher ist es möglich, eine Datenbanktabelle mit einem Primärschlüssel zu konfigurieren, der nicht der automatische ist -inkrementierendes Feld, während die Funktionalität und Effizienz einer automatisch inkrementierenden Spalte erhalten bleibt. Diese Flexibilität im Tabellendesign ermöglicht eine optimale Leistung und eine benutzerfreundliche Verwendung von Identifikatoren in Abfragen.

Das obige ist der detaillierte Inhalt vonKann ich den Primärschlüssel in MySQL ändern, während ein automatisch inkrementierendes Feld funktionsfähig bleibt?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage