Синтаксис составного ключа SQL - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь создать составной ключ для MYSQL, но я не знаю, как, я попробовал следующее;

CREATE TABLE order_line(
order_id int NOT NULL AUTO_INCREMENT,
car_id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (order_id, car_id));

ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id);
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id);

Ответы [ 4 ]

2 голосов
/ 27 марта 2012

В MySQL у вас может быть только один столбец AUTO_INCREMENT, поэтому вы не можете определить составной ключ как AUTO_INCREMENT.Вы пробовали только

CREATE TABLE order_line(
  order_id int NOT NULL,
  car_id int NOT NULL,
PRIMARY KEY (order_id, car_id));
2 голосов
/ 27 марта 2012

у вас не может быть автоинкрементного ключа.Увидеть этот ваш пример не имеет смысла, по ключу, который вы говорите, что order_id ссылается на orders (order_id), что хорошо, но в таблице вы говорите, что это то же значение - автоинкремент, что означает, что оно будет сгенерировано.по базе данных.

Удалите оба AUTO_INCREMENT из вашей таблицы order_line, и у вас все будет в порядке

, если вы хотите, чтобы у вас было поле AUTO_INCREMENT order_line_id в вашей таблице order_line в качестве первичного ключа (который я рекомендую)

0 голосов
/ 26 марта 2013

CONSTRAINT composite_key_name PRIMARY KEY (col1,col2)

0 голосов
/ 27 марта 2012

Хорошо, я смог сделать это как;

CREATE TABLE order_line (
order_id int NOT NULL,
car_id int NOT NULL);

ALTER TABLE order_line ADD CONSTRAINT order_line_PK PRIMARY KEY (order_id, car_id);
ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id);
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...