Maison  >  Questions et réponses  >  le corps du texte

Comment puis-je ajouter une relation à ces deux tables lorsqu'il y a un identifiant et un préfixe dans la clé primaire ?

Je ne sais pas comment lier ces deux tableaux. Quelqu'un peut-il m'aider ? Je souhaite ajouter une relation dans ces deux tables, mais comme j'utilise l'identifiant et le préfixe comme clé primaire, il ne l'accepte pas comme clé étrangère. Je continue à recevoir "La contrainte de clé étrangère est mal formée".

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粉675258598400 Il y a quelques jours499

répondre à tous(1)je répondrai

  • P粉494151941

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

    Ajoutez ZEROFILL à votre identifiant :

    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)
      );

    répondre
    0
  • Annulerrépondre