gpt4 book ai didi

mysql - 复合键 - 一个外键,另一个自动递增

转载 作者:行者123 更新时间:2023-11-29 04:46:55 25 4
gpt4 key购买 nike

我在 MySQL 中创建表时遇到问题。本质上,我需要一个使用“client_id”和“problem_id”的复合键。在“clients”表中,“client_id”是主键,所以我想保持这种关系,“problem_id”需要自动递增。

CREATE TABLE problems (
client_id BIGINT(10) NOT NULL REFERENCES clients(client_id),
problem_id INT NOT NULL AUTO_INCREMENT,
status CHAR(1) NOT NULL,
description VARCHAR(100) NOT NULL,
start_date VARCHAR(10) NOT NULL,
end_date VARCHAR(10),
PRIMARY KEY (client_id, problem_id)
);

MySQL 不会接受这个,但对我来说这似乎是合乎逻辑的。我怎样才能得到这样的表?

最佳答案

两个问题:

  • InnoDB 要求 auto_increment 列是主键中的第一列。

  • InnoDB 不支持列级REFERENCES 语法,只支持表级FOREIGN KEY 约束语法。

这应该有效:

CREATE TABLE problems (
client_id BIGINT(10) NOT NULL,
problem_id INT NOT NULL AUTO_INCREMENT,
status CHAR(1) NOT NULL,
description VARCHAR(100) NOT NULL,
start_date VARCHAR(10) NOT NULL,
end_date VARCHAR(10),
PRIMARY KEY (problem_id, client_id),
FOREIGN KEY (client_id) REFERENCES clients(client_id)
);

但是,这意味着您的聚簇索引(主键)将有利于查找按 problem_id,但不是按 client_id 查找。

关于mysql - 复合键 - 一个外键,另一个自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17706289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com