我已经阅读了几篇帖子,但无法解决我在phpMyAdmin中创建外键的问题。我有以下两种模式:
CREATE TABLE `verifieduser` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`country` varchar(50) NOT NULL,
`location` varchar(50) NOT NULL,
`rname` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `restaurant` (
`location` varchar(50) NOT NULL,
`cuisine` varchar(30) NOT NULL,
`description` varchar(200) NOT NULL,
`phone` varchar(20) NOT NULL,
`rname` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `restaurant`
ADD PRIMARY KEY (`location`,`rname`),
ADD UNIQUE KEY `phone` (`phone`);
我试图让verifieduser表中的rname成为餐厅表中rname的外键。我不确定为什么它不允许我,因为它具有相同的值,我没有将约束更改为" SET NULL"。
提前致谢。
答案 0 :(得分:0)
FOREIGN KEY
关系需要两个表格,即Parent table
& Child table
,其中的是UNIQUE
或PRIMARY KEY
类型的父表中的某些列
和子表中相同的匹配类型列。
但在你的情况下,rname varchar(50) NOT NULL is neither
UNIQUE nor
PRIMARY . So make it UNIQUE
或PRIMARY
,然后重试。
答案 1 :(得分:0)
在上面的查询中,您没有将rname
设置为restaurant
的主键,我认为这是问题所在。在我看来,id
中的列名restaurant
应该是主键,而verifieduser
中应该有rid
作为restaurant
的foriegn键
答案 2 :(得分:0)
首先,您需要更改表verifieduser
和rname一些键。之后,您将能够将其设为外键。只需运行以下查询。我希望这些对你有用。
ALTER TABLE `verifieduser` ADD PRIMARY KEY(`rname`);
之后添加FOREIGN键
ALTER TABLE `restaurant`
ADD FOREIGN KEY (`rname1` ) REFERENCES `verifieduser` (`rname` )