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.
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.
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:
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.
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