Сценарий включает таблицу MySQL, в которой столбец id служит полем автоинкремента для визуальных для удобства, а столбецmemberid действует как фактический уникальный ключ. Однако попытка определить таблицу с помощью PRIMARY KEY (memberid) приводит к ошибке (1075), в которой говорится, что может быть только один автоматический столбец, и это должен быть ключ.
Чтобы решить эту проблему, можно иметь столбец с автоматическим приращением, который не является ПЕРВИЧНЫМ КЛЮЧОМ, при условии, что для него определен индекс (ключ). Вот измененное определение таблицы:
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;
При добавлении индекса KEY или UNIQUE KEY в столбец id сохраняется функция автоматического приращения, в то время как столбецmemberid становится первичным ключом, что позволяет эффективно выполнять запросы на основе значенияmemberid.
Лучший выбор зависит от относительной важности производительности и дискового пространства. Если производительность имеет первостепенное значение, поддержание столбца идентификаторов с автоматическим приращением и использование индекса по идентификатору участника обеспечивают баланс:
Однако, если дисковое пространство является серьезной проблемой, рассмотрите возможность полного удаления столбца id и использования столбцаmemberid как первичного ключа, так и автоматического - инкрементное поле. Этот подход жертвует некоторой производительностью ради улучшения использования пространства. В конечном итоге выбор между производительностью и пространством зависит от конкретных требований приложения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3