在phpMyAdmin中创建关系

时间:2014-08-03 12:08:09

标签: mysql sql phpmyadmin

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

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

我的phpMyAdmin版本是:4.1.6。

以下是我的" CREATE SHOW my_table":

的结果

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

TABLE_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

3 个答案:

答案 0 :(得分:2)

我不知道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。同样适用于UPDATEthis_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;

NB。通常只创建一个方向的外键。我已添加两个以显示任何方向都应在此设置中起作用。

答案 1 :(得分:0)

澄清:

Table_1有一个索引列1 Table_2有一个column2,您希望将其用作Table_1的外键

我认为您需要将column1作为Table_1的主键才能使其正常工作。

执行此操作后,Table_2关系视图中的第三个下拉列表会将column_1作为您可以选择的值。

希望这有帮助。

答案 2 :(得分:0)

选择您的数据库

从菜单中选择Designer

你会找到你所有的桌子。

从小菜单中选择create relation enter image description here

然后选择您的reference keyforeign key