SQL组合键语法

时间:2012-03-27 18:25:25

标签: mysql sql

我正在尝试为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 个答案:

答案 0 :(得分:2)

你不能自动增加密钥。 看看你的这个例子是没有意义的,关键是你说order_id引用命令(order_id),这很好,但在表上你说这个相同的值是自动增量,这意味着它将被生成由数据库。

从order_line表中删除AUTO_INCREMENT,你应该没问题

如果您愿意,可以在order_line表上将AUTO_INCREMENT order_line_id字段作为主键(我推荐)

答案 1 :(得分:2)

在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 :(得分:0)

好的,我能够做到这一点;

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);

答案 3 :(得分:0)

CONSTRAINT composite_key_name PRIMARY KEY (col1,col2)