MySQL在同一表中添加2个主键,然后在另一个表中引用它们
我有两个表:cunitals_card
和card_info
在cunitude_card
表中我有两个主要键:id> id and cid
。在card_info
表中,我有1个主键:id
。我想将2个外键添加到card_info
表中,但是当我尝试引用card_info.cid
conderes>
cesultes_card Table
表a href =“ https://i.sstatic.net/h1uvh.png” rel =“ nofollow noreferrer”>
card_info表
CREATE TABLE card_info (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
uid INT(11) NOT NULL,
cid VARCHAR(255) NOT NULL,
number BIGINT NOT NULL,
holder VARCHAR(255) NOT NULL,
type VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
FOREIGN KEY (uid)
REFERENCES customers (id)
ON DELETE CASCADE,
FOREIGN KEY (cid)
REFERENCES customers__card (cid)
ON DELETE CASCADE
);
cunitals_card
CREATE TABLE `customers_card` (
`id` int NOT NULL,
`uid` int NOT NULL,
`cid` varchar(255) COLLATE utf8mb4_hungarian_ci NOT NULL,
`cardname` varchar(255) COLLATE utf8mb4_hungarian_ci NOT NULL,
`cardnum` int NOT NULL,
`expiry` date NOT NULL,
`cvc` int NOT NULL,
`value` int NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD PRIMARY KEY (`id`,`cid`),
ADD CONSTRAINT `customers__card_ibfk_1` FOREIGN KEY (`uid` REFERENCES `customers` (`id`) ON DELETE CASCADE
)
我的摘要问题:如何在card_info.cid.cid
中创建一个引用到该的外键COUPTERUS_CARD.CID
而无需制作customers_card.cid
a 主键
?
I have two tables: customers_card
and card_info
In the customers_card
table I have two primary keys: id and cid
. In the card_info
table I have 1 primary key: id
. I want to add 2 foreign keys to the card_info
table but I got an error when I try to reference to the card_info.cid
customers_card table
card_info table
CREATE TABLE card_info (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
uid INT(11) NOT NULL,
cid VARCHAR(255) NOT NULL,
number BIGINT NOT NULL,
holder VARCHAR(255) NOT NULL,
type VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
FOREIGN KEY (uid)
REFERENCES customers (id)
ON DELETE CASCADE,
FOREIGN KEY (cid)
REFERENCES customers__card (cid)
ON DELETE CASCADE
);
And the error I get when I try to create the card_info
table:
customers_card
CREATE TABLE `customers_card` (
`id` int NOT NULL,
`uid` int NOT NULL,
`cid` varchar(255) COLLATE utf8mb4_hungarian_ci NOT NULL,
`cardname` varchar(255) COLLATE utf8mb4_hungarian_ci NOT NULL,
`cardnum` int NOT NULL,
`expiry` date NOT NULL,
`cvc` int NOT NULL,
`value` int NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD PRIMARY KEY (`id`,`cid`),
ADD CONSTRAINT `customers__card_ibfk_1` FOREIGN KEY (`uid` REFERENCES `customers` (`id`) ON DELETE CASCADE
)
My summarized question: How can I create a foreign key in the card_info.cid
that references to the customers_card.cid
without making the customers_card.cid
a primary key
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要使用两个主要键。将
ID
设置为unique
并保留auto_increment
,然后将主键
设置为cid> cid < /代码>,因此您可以参考它们。
Don't use two primary keys. Set the
id
toUNIQUE
and keep theAUTO_INCREMENT
, and set theprimary key
to thecid
, so you can reference to them.