搜索

首页  >  问答  >  正文

当主键中有id和前缀时,如何向这两个表添加关系?

我不知道如何链接这两个表。有人可以帮忙吗? 我想在这两个表中添加关系,但由于我使用 id 和前缀作为主键,因此它不接受它作为外键。我总是收到“外键约束格式不正确”。

CREATE TABLE Donor (
    id int(3) ZEROFILL NOT NULL AUTO_INCREMENT,
    prefix varchar(5) NOT NULL DEFAULT 'D',
    name varchar(50) NOT NULL,
    PRIMARY KEY (id, prefix)
  );
    
INSERT INTO Donor (name) VALUES
('Product #1'),
('Product #2');

SELECT CONCAT(prefix,id) as "DonorID", name FROM Donor;

CREATE TABLE Blood_Type (
    btid int(3) ZEROFILL NOT NULL AUTO_INCREMENT,
    btprefix varchar(5) NOT NULL DEFAULT 'BT',
    id int(3) NOT NULL,
    prefix varchar(5) NOT NULL DEFAULT 'D',
    name varchar(50) NOT NULL,
    PRIMARY KEY (btid, btprefix),
    foreign key (id, prefix) references Donor(id, prefix)
  );
    
INSERT INTO Blood_Type (name) VALUES
('Blood #1'),
('Blood #2');

SELECT CONCAT(btprefix, btid) as "bloodID", name FROM Blood_Type;

P粉675258598P粉675258598443 天前536

全部回复(1)我来回复

  • P粉494151941

    P粉4941519412023-09-16 09:31:19

    ZEROFILL 添加到您的 ID 中:

    CREATE TABLE Blood_Type (
        btid int(3) ZEROFILL NOT NULL AUTO_INCREMENT,
        btprefix varchar(5) NOT NULL DEFAULT 'BT',
        id int(3) ZEROFILL NOT NULL,
        prefix varchar(5) NOT NULL DEFAULT 'D',
        name varchar(50) NOT NULL,
        PRIMARY KEY (btid, btprefix),
        foreign key  (id, prefix) references Donor(id, prefix)
      );

    回复
    0
  • 取消回复