根据另一个表中的主键创建主键

时间:2015-11-30 19:47:05

标签: mysql primary-key auto-increment

我有一个看起来像这样的表(仅显示一些列作为示例),其中ID自动递增:

('client' table)

client_id | state | concerns
__________|_______|_________
    01    |   MA  |   ...
    02    |   NJ  |   ...
    03    |   MA  |   ...

我有另一个表,我想为该表的PK做的是根据'client'表中的PK创建它。 (客户可以是一个人,也可以是两个人)

('person' table)

    person_id | fname |     dob    | client_id
    __________|_______|____________|__________
        01A   |   MA  |  1/1/1978  |    01   
        01B   |   MA  |  2/7/1985  |    01
        02    |   NJ  |  5/17/1983 |    02
        03A   |   MA  |  3/12/1970 |    03
        03B   |   MA  |  5/23/1987 |    03

因此,如果客户端由两个人组成,它只会将字母添加到PK中(注意'person_id'如何保留为02)。

我应该怎么做呢?我不确定它是否为'01_1','01_2'会比让它看起来像'01A','01B'更容易,但无论哪种方式最简单都是首选!提前谢谢!

**(我忘了提到我正在使用MySQL,如果这有所不同!)

1 个答案:

答案 0 :(得分:0)

您需要创建引用客户端ID的外键,然后将其设为主键。我建议您为特定数据创建其他列。

以下是一个示例,我忽略了其他列:

CREATE TABLE client (
    client_id CHAR(40),
    PRIMARY KEY(client_id),
) ENGINE=INNODB;

CREATE TABLE person (
    client_id CHAR(40),
    person CHAR(40),
    PRIMARY KEY (client_id, person),
    FOREIGN KEY (client_id) REFERENCES client(client_id)
) ENGINE=INNODB;