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;
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!