Вот таблица в MySQL 5.3.X + db:
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 никогда не используется в запросах, он просто для удобства наглядности (так что легко увидеть, как растет таблица). Memberid является фактическим ключом, является уникальным, а memberid используется в запросах для идентификации любого члена (WHERE memberid = 'abcde).
Мой вопрос: как сохранить auto_increment, но сделать memberid в качестве первичного ключа? Это возможно? Когда я пытаюсь создать эту таблицу с PRIMARY KEY (memberid), я получаю сообщение об ошибке:
1075 - неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ
Каков наилучший выбор (надеюсь, есть способ сохранить столбец id, так что производительность хорошая, а запросы идентифицируют любого пользователя по члену, а не по id), если производительность очень важна (хотя дискового пространства нет)