MySQL меняет уникальный ключ на основной (mariadb)

0

У меня есть мои пользователи таблицы:

+--------------------+--------------+------+-----+---------+-------+
| 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 когда я его никогда не задавал?

Теги:
mariadb
primary-key
myisam
unique-key

1 ответ

0

"UNIQUE-индекс может отображаться как PRI, если он не может содержать значения NULL, и в таблице нет PRIMARY KEY. UNIQUE-индекс может отображаться как MUL, если несколько столбцов образуют объединенный индекс UNIQUE, хотя комбинация столбцов уникальна, каждый столбец может содержать несколько вхождений заданного значения ".

https://dev.mysql.com/doc/refman/5.7/en/show-columns.html

Нашел мой ответ.

  • 0
    Лучше всего явно указать PRIMARY KEY . Редко иметь два UNIQUE ключа в таблице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню