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