【发布时间】:2013-07-27 06:15:59
【问题描述】:
我使用以下脚本在 mysql 中创建了一个表:
CREATE TABLE IF NOT EXISTS users_x_activities(
id int NOT NULL auto_increment,
id_user int unsigned NOT NULL,
id_attivita int unsigned NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_user) REFERENCES utente(id),
FOREIGN KEY (id_attivita) REFERENCES attivita(id)
) ENGINE = INNODB;
当我从 phpMyAdmin 导出创建的表时,我得到以下脚本
CREATE TABLE IF NOT EXISTS `users_x_activities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(10) unsigned NOT NULL,
`id_attivita` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `id_user` (`id_user`),
KEY `id_attivita` (`id_attivita`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
所以问题是:我的外键约束在哪里? KEY 是指 FK 吗?似乎在新生成的脚本中不再引用utente 和attivita 这两个表。我哪里做错了?
编辑
在phpMyAdmin中,配置表的导出我发现选项“显示外键关系” 如果我标记此选项,我也会在脚本中获得此代码
--
-- RELATIONS FOR TABLE `users_x_activity`:
-- `id_user`
-- `utente` -> `id`
-- `id_attivita`
-- `attivita` -> `id`
--
--
-- Constraints for dumped tables
--
--
-- Constraints for table `users_x_activity`
--
ALTER TABLE `users_x_activity`
ADD CONSTRAINT `users_x_activities_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `utente` (`id`),
ADD CONSTRAINT `users_x_activities_ibfk_2` FOREIGN KEY (`id_attivita`) REFERENCES `attivita` (`id`);
这意味着如果我添加“显示外键关系”选项,我也会获得 FK 约束?在其他情况下不是?
【问题讨论】:
-
phpmyadmin 不是在 create table 语句之后添加所有表约束,而不是在 create table 语句中?您是否检查了脚本末尾的添加约束命令?
-
@BlaiseSwanwick 我已经编辑了我的问题。在第一个生成的脚本中,我没有获得其他语句。使用新选项,我获得了其他声明(请参阅编辑)
标签: mysql sql phpmyadmin foreign-keys key