Mysql, AUTO_INCREMENT

139
02 апреля 2021, 23:20

Вопрос такой, я создаю таблицу в нем будет

CREATE TABLE members(
    -> id INT(9) UNSIGNED AUTO_INCREMENT,
    -> name VARCHAR(20),
    -> last_name VARCHAR(30),
    -> email VARCHAR(40) PRIMARY KEY,
    -> password VARCHAR(30),
    -> INDEX(id);

теперь сам вопрос, нужен ли столбцу id индекс или AUTO_INCREMENT само сделает как PRIMARY KEY

P.S может лучше будет убрать PRIMARY KEY из email и добавить к id , а email-и проверять если нету такого добавлять + index?

Answer 1

Индекс нужен. Не обязательно первичный.

MyISAM: для определения следующего значения счётчика автоинкремента использует индекс, в котором (если он составной) поле с автоинкрементом идёт первым по очереди:

If the AUTO_INCREMENT column is part of multiple indexes, MySQL generates sequence values using the index that begins with the AUTO_INCREMENT column ..

InnoDB: автоинкремент может быть применён только к полю которое является частью индекса. Прямой ответ на ваш вопрос (как же вы читали документацию?!):

To use the AUTO_INCREMENT mechanism with an InnoDB table, an AUTO_INCREMENT column must be defined as part of an index ..

READ ALSO
WordPress добавление в метаданные пост тайпа

WordPress добавление в метаданные пост тайпа

Только осваиваю WordPress, есть кастомный пост тайп

99
Не работает комментирование кода в PHP

Не работает комментирование кода в PHP

Запустил vagrant up в проекте yii2, закомментированный код отображается мне во view, второй день бьюсь с этой проблемой, не могу понять в чём дело?

100
Область действия сервисов

Область действия сервисов

Не могу понять правильную область действия сервисов в web приложенииВот у нас есть сервис, логично, как мне кажется, предположить, что его можно...

135
Почему функция unlink() не видит файл?

Почему функция unlink() не видит файл?

Хочу удалить файл из папки так как папок и файлов много я подставляю их имена через переменную unlink('files/$loc/cards/$namephp');, но функция unlink не видит...

112