Как иметь столбец автоинкремента в таблице MySQL, не делая его первичным ключом? - PullRequest
0 голосов
/ 22 февраля 2020

Вот мой SQL для создания 2 таблиц с соответствующими первичным и внешним ключами. Проблема в том, что я хочу, чтобы в моей дочерней таблице был столбец с автоинкрементом, но я хочу сделать другой столбец в качестве первичного ключа. Как я могу это исправить?

CREATE TABLE patient (
_id INT(5) UNSIGNED AUTO_INCREMENT NOT NULL,
pn VARCHAR(11) DEFAULT NULL,
first VARCHAR(15) DEFAULT NULL,
last VARCHAR(25) DEFAULT NULL,
dob DATE DEFAULT NULL,
PRIMARY KEY (_id)
);

CREATE TABLE insurance (
_id INT(5) UNSIGNED AUTO_INCREMENT,
patient_id INT(5) UNSIGNED NOT NULL,
iname VARCHAR(40) DEFAULT NULL,
from_date DATE DEFAULT NULL,
to_date DATE DEFAULT NULL,
PRIMARY KEY (patient_id),
CONSTRAINT fk_insurance FOREIGN KEY (patient_id)
REFERENCES patient(_id)
);

Это дает мне ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key, и я не знаю, как это исправить. Я новичок в этом, и мне нужна помощь, спасибо.

1 Ответ

2 голосов
/ 22 февраля 2020

Рассмотрим:

CREATE TABLE insurance (
    _id INT(5) UNSIGNED AUTO_INCREMENT,
    patient_id INT(5) UNSIGNED NOT NULL,
    iname VARCHAR(40) DEFAULT NULL,
    from_date DATE DEFAULT NULL,
    to_date DATE DEFAULT NULL,
    PRIMARY KEY (patient_id),
    KEY(_id),
    CONSTRAINT fk_insurance FOREIGN KEY (patient_id)
    REFERENCES patient(_id)
);

То есть столбец с автоинкрементом должен быть по крайней мере key. Вы все еще можете использовать другой столбец в качестве первичного ключа, если хотите.

...