gpt4 book ai didi

mysql - 如何链接具有不同名称的外键

转载 作者:行者123 更新时间:2023-11-29 11:31:30 28 4
gpt4 key购买 nike

我有 2 个不同的表:个人资料和交易

个人资料包含:pID、firstName、lastName、phoneNumb

交易组成:transID、sellerID、buyerID、itemID

我的问题是:

如何确保sellerIDbuyerID都充当引用配置文件表中的profileID的外键?

我现在的代码:

CREATE TABLE PROFILE
(
pID INT NOT NULL AUTO_INCREMENT ,
firstName VARCHAR(20) NOT NULL ,
lastName INT(20) NOT NULL ,
phoneNumb INT NOT NULL ,
PRIMARY KEY (pID)
) ENGINE = InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE TRANSACTION
(
tID INT NOT NULL AUTO_INCREMENT ,
sellerID INT ,
buyerID INT,
itemID INT,
PRIMARY KEY (tID),
FOREIGN KEY (sellerID, buyerID) REFERENCES PROFILE(pID),
FOREIGN KEY (itemID) REFERENCES ITEM (itemID)
) ENGINE = InnoDB DEFAULT CHARSET=latin1;

我尝试了这个,但它给了我这种错误

1239 - Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match

谢谢。

最佳答案

我会这样处理:

CREATE TABLE TRANSACTION 
(
tID INT NOT NULL AUTO_INCREMENT,
sellerID INT,
buyerID INT,
itemID INT,
PRIMARY KEY (tID),
CONSTRAINT fk1 FOREIGN KEY (sellerID) REFERENCES PROFILE(pID)
CONSTRAINT fk2 FOREIGN KEY (buyerID) REFERENCES PROFILE(pID)
CONSTRAINT itemKey FOREIGN KEY (itemID) REFERENCES ITEM (itemID)
) ENGINE = InnoDB DEFAULT CHARSET=latin1;

这假设存在名为 ITEM 的表,该表具有名为 itemID 的主键。您原来的问题只提到了两个表。如果 ITEM 不存在,则创建它或从 TRANSACTION 中删除外键约束。

关于mysql - 如何链接具有不同名称的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37336953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com