Oto tabela w MySQL 5.3.X + DB:MySQL: # 1075 - Niepoprawna definicja tabeli; autoincrement vs inny klucz?
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 ,
UNIQUE (memberid),
PRIMARY KEY (id)
) ENGINE = MYISAM;
Id kolumna nie jest wykorzystywana w zapytaniach, to tylko dla wygody wizualnym (tak łatwo jest zobaczyć, jak tabela rośnie). Członek jest rzeczywistym kluczem, jest unikalny, a członek jest używany w zapytaniach do identyfikacji dowolnego członka (WHERE memberid = 'abcde').
Moje pytanie brzmi: jak zachować auto_increment, ale czy memberid jest kluczem podstawowym? Czy to jest możliwe? Kiedy próbuję utworzyć tę tabelę z PRIMARY KEY (memberid), otrzymuję błąd:
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Co jest najlepszym wyborem (Mam nadzieję, że istnieje sposób, aby zatrzymać kolumnę id więc wydajność jest dobra i kwerendy identyfikują dowolnego użytkownika według memberid, a nie id), jeśli wydajność jest bardzo ważna (chociaż miejsce na dysku nie jest)?
+1 i dzięki za komentarz, dowiedziałem się czegoś dzisiaj :) –