gpt4 book ai didi

mysql - 在 phpMyAdmin 中创建关系

转载 作者:行者123 更新时间:2023-11-29 07:56:07 27 4
gpt4 key购买 nike

作为 phpMyAdmin 的新手,我想在我的一个表 (Table_1) 的列 (column_1) 与列 (column_2) 之间创建关系)在另一个表(Table_2)中。

我首先在 Table_1 中索引 column_1,当我想在 Table_1 的关系 View 选项卡中创建关系时,在 前面>column_1,我首先从第一个下拉菜单中选择数据库,在第二个下拉菜单中选择Table_1,但第三个下拉菜单(似乎应该包括column_2 )没有选择选项。

我的phpMyAdmin版本是:4.1.6。

下面是我的“CREATE SHOW my_table”的结果:

表_1:

CREATE TABLE `Table_1` (

`column_1` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`column_1`),
KEY `FK_COLUMN1` (`column_1`))
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

表_2:

 CREATE TABLE `Table_2` (
`column_2` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`column_2`),
KEY `FK1_COLUMN2` (`column_2`))
ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

最佳答案

我不知道 PMA 出了什么问题。以下查询应创建引用。如果失败,错误消息将解释更多;)

ALTER TABLE `this_table`
ADD CONSTRAINT `name_of_the_constraint` FOREIGN KEY (`this_column`)
REFERENCES `external_table` (`external_column`)
ON DELETE CASCADE ON UPDATE CASCADE;

ON DELETE CASCADE 确实意味着,如果 external_table 中的行被删除,this_table 中的行也将被删除。有效选项还有 RESTRICTSET NULL。同样适用于 UPDATE(this_table 中的行也将更新)。

编辑:

回答你的评论:我已经在一个新的空数据库/方案上运行了以下 SQL,并且所有运行都完美无误。如果它不在你的机器上,我不知道出了什么问题(我无法重现它)。如果以下也适用于您,那么与您之前尝试的有什么不同?

CREATE TABLE `Table_1` (

`column_1` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`column_1`),
KEY `FK_COLUMN1` (`column_1`))
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `Table_2` (
`column_2` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`column_2`),
KEY `FK1_COLUMN2` (`column_2`))
ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `Table_1` (`column_1`) VALUES ( '1' ), ( '2' ); /* Add some both valid as invalid relations */
INSERT INTO `Table_2` (`column_2`) VALUES ( '1' ), ( '3' ); /* Add some both valid as invalid relations */

SET foreign_key_checks = 0;
ALTER TABLE Table_1 ADD FOREIGN KEY (column_1) REFERENCES Table_2(column_2) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE Table_2 ADD FOREIGN KEY (column_2) REFERENCES Table_1(column_1) ON DELETE RESTRICT ON UPDATE RESTRICT;

注意。通常您只创建一个方向的外键。我添加了这两个方向以表明任一方向都应该在此设置中工作。

关于mysql - 在 phpMyAdmin 中创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104488/

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