У меня есть мои пользователи таблицы:
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid | varchar(30) | YES | | NULL | |
| lname | varchar(40) | YES | | NULL | |
| fname | varchar(20) | YES | | NULL | |
| system_id | varchar(12) | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
и я хочу изменить system_id
и userid
как уникальные ключи.
Если я изменил их с помощью ALTER TABLE users MODIFY userid varchar(30) NOT NULL UNIQUE KEY;
Я получил:
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid | varchar(30) | NO | PRI | NULL | |
| lname | varchar(40) | YES | | NULL | |
| fname | varchar(20) | YES | | NULL | |
| system_id | varchar(12) | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
а затем, если я изменю system_id ALTER TABLE users MODIFY system_id varchar(30) NOT NULL UNIQUE KEY;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| userid | varchar(30) | NO | PRI | NULL | |
| lname | varchar(40) | YES | | NULL | |
| fname | varchar(20) | YES | | NULL | |
| system_id | varchar(12) | NO | UNI | NULL | |
+--------------------+--------------+------+-----+---------+-------+
Почему MySQL меняет свой ключ UNIQUE
на PRI
когда я его никогда не задавал?
"UNIQUE-индекс может отображаться как PRI, если он не может содержать значения NULL, и в таблице нет PRIMARY KEY. UNIQUE-индекс может отображаться как MUL, если несколько столбцов образуют объединенный индекс UNIQUE, хотя комбинация столбцов уникальна, каждый столбец может содержать несколько вхождений заданного значения ".
https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
Нашел мой ответ.
PRIMARY KEY
. Редко иметь дваUNIQUE
ключа в таблице.