Какой смысл использовать AUTO_INCREMENT и PRIMARY KEY одновременно в MySQL? - PullRequest
0 голосов
/ 11 ноября 2018

В MySQL я понимаю ниже


AUTO_INCREMENT: используется для автоматического увеличения значения INT каждый раз, когда пользователь создает строку.

PRIMARY KEY: используется для создания value уникальным в этой таблице.


Однако я часто вижу, как они используются вместе при определении id.

Я не понимаю смысла использования AUTO_INCREMENT с PRIMARY KEY, поскольку сам AUTO_INCREMENT сделает id уникальным.

Есть ли причина, по которой они используются вместе при создании id?

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Первичный ключ имеет три свойства:

  1. Это уникально.
  2. Это не ноль.
  3. В таблице только один.

Определение ключа в качестве первичного ключа означает, что его также следует использовать для ссылок на внешний ключ.

Кроме того, MySQL кластеризует данные по первичному ключу. Таким образом, объявление указывает новым строкам идти в «конец» таблицы, то есть рядом с самыми последними вставками на страницах данных.

Кроме того, дубликаты значений для автоматически увеличиваемого идентификатора могут создаваться различными способами. Одним из способов является то, что счетчик приращений может быть сброшен, вызывая дублирование. MySQL должен быть довольно потокобезопасным для дубликатов для одновременных обновлений, но об ошибках сообщалось. Как primary key, дубликаты не будут допущены в таблицу.

0 голосов
/ 11 ноября 2018

AUTO_INCREMENT не делает столбец уникальным. Он только «автоматически» заполняет значение при создании строки, если отсутствует. Но вы можете позже обновить значения или также создать строку, явно указав значение.

PRIMARY KEY запрещает любую модификацию SQL-оператора, которая привела бы к двум различным записям, хранящим одинаковые значения. Таким образом, это гарантирует вам, что ваша БД находится в правильном состоянии.

0 голосов
/ 11 ноября 2018

Вы правильно понимаете, но они делают разные вещи.

PRIMARY KEY с AUTO_INCREMENT означает, что мы хотим, чтобы этот столбец не повторялся по значению, и он будет автоматически увеличиваться, если мы не установили значение.

но как насчет того, чтобы установить только AUTO_INCREMENT, это означает, что оно будет автоматически увеличиваться, если мы не установили значение. но не убедился, что значение уникально.

...