Сделать первичный ключ не "автоинкрементным" в MySQL? - PullRequest
0 голосов
/ 21 февраля 2020

Можно ли сделать первичный ключ (который будет использоваться в качестве внешнего ключа) без автоинкремента. Представьте, что актер печатает свой идентификатор из другого источника. Я хочу взять это случайное значение int и сохранить его в качестве основного

1 Ответ

1 голос
/ 21 февраля 2020

Да.

Вы должны указать AUTO INCREMENT или тип данных SERIAL, чтобы он автоматически увеличивал значения. Если ваш PRIMARY KEY, на который будет ссылаться этот FOREIGN KEY, относится к типу данных SERIAL, то вам нужно будет сделать FOREIGN KEY тип данных BIGINT UNSIGNED. SERIAL фактически является псевдонимом для установки столбца на BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. Установка FOREIGN KEY в BIGINT UNSIGNED даст ему тот же диапазон целых чисел, что и в последовательном.

Помните, что PRIMARY KEY должен быть уникальным. Таким образом, если в этой таблице должно быть несколько записей, которые будут ссылаться на одну запись в другой таблице, вам может быть лучше создать PRIMARY KEY типа SERIAL, а затем иметь другой столбец с вашим FOREIGN KEY, который введите BIGINT UNSIGNED. Это позволит вам иметь несколько записей с одинаковым значением для столбца FOREIGN KEY, но у вас все равно будет действительный PRIMARY KEY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...