gpt4 book ai didi

mysql - 在2个表之间创建外键

转载 作者:行者123 更新时间:2023-11-29 12:12:51 25 4
gpt4 key购买 nike

好吧,就这样了。我在 phpmyadmin 中有 2 个表。一个用于个人详细信息,另一个用于登录信息。两个表都有 AccountID ,所以我尝试使用外键约束来连接表。完成此操作后,我似乎无法使用新数据更新表。在约束之前,更新表工作正常。

我想要做的是将用户登录信息和个人信息存储在这些表中。然后,每当用户想要删除其当前帐户时,个人详细信息和登录详细信息都会从两个表中删除,或者当他们想要搜索其登录名和个人信息时,搜索引擎可以使用 AccountID 从两个表中搜索。 .

到目前为止,我已经创建了 2 个新表。其中一个表是个人信息,其中有“AccountID”[A_I][PRIMARY] 和“loginID”。另一个表是登录信息。它有“loginID”[A_i][PRIMARY] ]

我已经在个人信息和索引中创建了“loginID”,但我无法为其分配外键约束,因为它没有在个人信息中检测到“loginID”。

最佳答案

您的 AccountId 应该是一个表(例如“个人信息”表)中的主键。此 AccountId 应是另一个表(登录)中的外键,并确保设置为“删除级联”和“更新级联”。所以在这个结构中,当个人信息被删除时,登录表中对应的记录也会被自动删除。

DROP TABLE IF EXISTS `stacktest`.`personal_info`;
CREATE TABLE `stacktest`.`personal_info` (
`account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`age` varchar(45) DEFAULT NULL,
PRIMARY KEY (`account_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `stacktest`.`login_info`;
CREATE TABLE `stacktest`.`login_info` (
`loginId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`account_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`loginId`),
KEY `FK_login_info_1` (`account_id`),
CONSTRAINT `FK_login_info_1` FOREIGN KEY (`account_id`) REFERENCES `personal_info` (`account_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

以上是创建 2 个表的方法。然后在两个表中插入一些值,

注意两个表中的 account_id 值必须相同。

之后,您可以触发删除查询,例如:

从个人信息中删除 accound_id=2;

这将从父表personal_info以及子表login_info(其中account_id为2)中删除行

在子表中将 account_id 保留为 NOT NULL:

DROP TABLE IF EXISTS `stacktest`.`login_info`;
CREATE TABLE `stacktest`.`login_info` (
`loginId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`account_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`loginId`),
KEY `FK_login_info_1` (`account_id`),
CONSTRAINT `FK_login_info_1` FOREIGN KEY (`account_id`) REFERENCES `personal_info` (`account_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

关于mysql - 在2个表之间创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345061/

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