您好我是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 确实是必要的,必须在选择期间
答案 0 :(得分:0)
您可以创建一个计算列,如果您真的想要它在磁盘上的值,您可以保留计算列
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));
然而,除非您要求该对(患者,外科医生)唯一地识别病例,否则您应该考虑增加一个额外的字段(例如手术日期)