„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können automatisch inkrementierte Spalten existieren, ohne der Primärschlüssel in MySQL zu sein?

Können automatisch inkrementierte Spalten existieren, ohne der Primärschlüssel in MySQL zu sein?

Veröffentlicht am 04.11.2024
Durchsuche:981

Can Auto-Increment Columns Exist Without Being the Primary Key in MySQL?

Behebung eines falschen Tabellendefinitionsfehlers: Ausgleich von automatischer Inkrementierung und Primärschlüssel

Das Szenario umfasst eine MySQL-Tabelle, in der die ID-Spalte als automatisches Inkrementierungsfeld für visuelle Zwecke dient Bequemlichkeit, während die Memberid-Spalte als tatsächlicher eindeutiger Schlüssel fungiert. Der Versuch, die Tabelle mit PRIMARY KEY (Mitglieds-ID) zu definieren, führt jedoch zu einem Fehler (1075), der besagt, dass es nur eine Auto-Spalte geben kann und es sich um einen Schlüssel handeln muss.

Beheben des Fehlers: Automatische Inkrementierung beibehalten und eindeutiger Schlüssel

Um das Problem zu beheben, ist es möglich, eine automatisch inkrementierende Spalte zu haben, die nicht der PRIMÄRSCHLÜSSEL ist, vorausgesetzt, ein Index (Schlüssel) ist darauf definiert. Hier ist die geänderte Tabellendefinition:

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 Hinzufügen eines KEY- oder UNIQUE KEY-Index zur ID-Spalte bleibt die Funktion zur automatischen Inkrementierung erhalten, während die Member-ID-Spalte zum Primärschlüssel wird, was effiziente Abfragen basierend auf dem Member-ID-Wert ermöglicht.

Auswahl des optimalen Ansatzes: Leistung und Speicherplatz in Einklang bringen

Die beste Wahl hängt von der relativen Bedeutung von Leistung und Speicherplatz ab. Wenn die Leistung von größter Bedeutung ist, sorgt die Beibehaltung der automatisch inkrementierenden ID-Spalte und die Verwendung eines Index für die Mitglieds-ID für Ausgewogenheit:

  • Die automatisch inkrementierende ID sorgt für effiziente Sortierung und Bereichsabfragen.
  • Die Der Index für die Mitglieds-ID gewährleistet schnelle Suchvorgänge mithilfe der eindeutigen Mitgliedskennung.

Wenn jedoch der Speicherplatz ein erhebliches Problem darstellt, sollten Sie erwägen, die ID-Spalte vollständig zu entfernen und sich auf die Mitglieds-ID-Spalte sowohl als Primärschlüssel als auch als Auto zu verlassen -inkrementierendes Feld. Dieser Ansatz opfert etwas Leistung zugunsten einer verbesserten Raumnutzung. Letztendlich hängt die Wahl zwischen Leistung und Platz von den spezifischen Anforderungen der Anwendung ab.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3