Wie kann ich eine Beziehung zu diesen beiden Tabellen hinzufügen, wenn der Primärschlüssel eine ID und ein Präfix enthält?
P粉675258598
P粉675258598 2023-09-15 15:03:48
0
1
532

Ich weiß nicht, wie ich diese beiden Tabellen verknüpfen soll. Kann jemand helfen? Ich möchte eine Beziehung in diesen beiden Tabellen hinzufügen, aber da ich ID und Präfix als Primärschlüssel verwende, wird es nicht als Fremdschlüssel akzeptiert. Ich erhalte ständig die Meldung „Fremdschlüsseleinschränkung ist fehlerhaft“.

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粉675258598
P粉675258598

Antworte allen(1)
P粉494151941

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)
  );
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage