如何创建级联主键?
How to create concatened primary key?
您好,我是 MySQL 的新手,但我想根据在其他两个表中创建的两个主键创建一个唯一 ID。
下面是我们感兴趣的部分:
CREATE TABLE patient(
id_patient int NOT NULL AUTO_INCREMENT,
...,
PRIMARY KEY (id_patient))
CREATE TABLE surgeon(
id_surgeonint NOT NULL AUTO_INCREMENT,
...,
PRIMARY KEY (id_surgeon))
CREATE TABLE case(
id_patient int NOT NULL,
id_surgeon int NOT NULL,
CONSTRAINT FK_case_patient FOREIGN KEY (id_patient) REFERENCES patient(id_patient),
CONSTRAINT FK_case_surgeon FOREIGN KEY (id_surgeon) REFERENCES surgeon(id_surgeon),
CONSTRAINT id_case PRIMARY KEY (id_patient, `_`,id_surgeon));
我想我不明白这个窍门。我想要以下结果:
SELECT * FROM case;
id_case | id_patient | id_surgeon
32_56 | 32 | 56
18_66 | 18 | 66
我知道计算速度不会是最优的,但是这个id-case确实是必要的并且必须在select
您可以创建一个计算列,如果您真的想要它的值在磁盘上,您可以保留计算列
CREATE TABLE case(
id_patient int NOT NULL,
id_surgeon int NOT NULL,
id_case varchar(30) AS CONCAT(id_patient, '_', id_surgeon),
CONSTRAINT FK_case_patient FOREIGN KEY (id_patient) REFERENCES patient(id_patient),
CONSTRAINT FK_case_surgeon FOREIGN KEY (id_surgeon) REFERENCES surgeon(id_surgeon),
CONSTRAINT pk_case PRIMARY KEY (id_patient,id_surgeon));
但是,除非您要求这对(患者、外科医生)唯一标识一个病例,否则您应该考虑添加一个额外的字段(例如手术日期)
您好,我是 MySQL 的新手,但我想根据在其他两个表中创建的两个主键创建一个唯一 ID。
下面是我们感兴趣的部分:
CREATE TABLE patient(
id_patient int NOT NULL AUTO_INCREMENT,
...,
PRIMARY KEY (id_patient))
CREATE TABLE surgeon(
id_surgeonint NOT NULL AUTO_INCREMENT,
...,
PRIMARY KEY (id_surgeon))
CREATE TABLE case(
id_patient int NOT NULL,
id_surgeon int NOT NULL,
CONSTRAINT FK_case_patient FOREIGN KEY (id_patient) REFERENCES patient(id_patient),
CONSTRAINT FK_case_surgeon FOREIGN KEY (id_surgeon) REFERENCES surgeon(id_surgeon),
CONSTRAINT id_case PRIMARY KEY (id_patient, `_`,id_surgeon));
我想我不明白这个窍门。我想要以下结果:
SELECT * FROM case;
id_case | id_patient | id_surgeon
32_56 | 32 | 56
18_66 | 18 | 66
我知道计算速度不会是最优的,但是这个id-case确实是必要的并且必须在select
您可以创建一个计算列,如果您真的想要它的值在磁盘上,您可以保留计算列
CREATE TABLE case(
id_patient int NOT NULL,
id_surgeon int NOT NULL,
id_case varchar(30) AS CONCAT(id_patient, '_', id_surgeon),
CONSTRAINT FK_case_patient FOREIGN KEY (id_patient) REFERENCES patient(id_patient),
CONSTRAINT FK_case_surgeon FOREIGN KEY (id_surgeon) REFERENCES surgeon(id_surgeon),
CONSTRAINT pk_case PRIMARY KEY (id_patient,id_surgeon));
但是,除非您要求这对(患者、外科医生)唯一标识一个病例,否则您应该考虑添加一个额外的字段(例如手术日期)