Mysql 如何将一个引用字段用于多个外键约束

Mysql 如何将一个引用字段用于多个外键约束,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,我想做3张这样的桌子: wc_组表 CREATE TABLE IF NOT EXISTS `wc_groups` ( `id` int(2) unsigned NOT NULL AUTO_INCREMENT, `idgroup` int(7) NOT NULL, `title` varchar(10) NOT NULL, `content` text, `status` smallint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`

我想做3张这样的桌子:

wc_组表

CREATE TABLE IF NOT EXISTS `wc_groups` (
  `id` int(2) unsigned NOT NULL AUTO_INCREMENT,
  `idgroup` int(7) NOT NULL,
  `title` varchar(10) NOT NULL,
  `content` text,
  `status` smallint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idgroup` (`idgroup`),
  KEY `status` (`status`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_matches` (
  `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
  `time` date NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
  `place` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `team_id_1` int(10) unsigned NOT NULL,
  `team_id_2` int(10) unsigned NOT NULL,
  `edituser` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `group_id_foreign` (`group_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_teams` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

ALTER TABLE `wc_teams`
  ADD CONSTRAINT `group_id_foreign` FOREIGN KEY (`group_id`) REFERENCES `wc_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
wc\u匹配表

CREATE TABLE IF NOT EXISTS `wc_groups` (
  `id` int(2) unsigned NOT NULL AUTO_INCREMENT,
  `idgroup` int(7) NOT NULL,
  `title` varchar(10) NOT NULL,
  `content` text,
  `status` smallint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idgroup` (`idgroup`),
  KEY `status` (`status`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_matches` (
  `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
  `time` date NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
  `place` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `team_id_1` int(10) unsigned NOT NULL,
  `team_id_2` int(10) unsigned NOT NULL,
  `edituser` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `group_id_foreign` (`group_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_teams` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

ALTER TABLE `wc_teams`
  ADD CONSTRAINT `group_id_foreign` FOREIGN KEY (`group_id`) REFERENCES `wc_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
wc\U团队表

CREATE TABLE IF NOT EXISTS `wc_groups` (
  `id` int(2) unsigned NOT NULL AUTO_INCREMENT,
  `idgroup` int(7) NOT NULL,
  `title` varchar(10) NOT NULL,
  `content` text,
  `status` smallint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idgroup` (`idgroup`),
  KEY `status` (`status`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_matches` (
  `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
  `time` date NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
  `place` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `team_id_1` int(10) unsigned NOT NULL,
  `team_id_2` int(10) unsigned NOT NULL,
  `edituser` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `group_id_foreign` (`group_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `wc_teams` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

ALTER TABLE `wc_teams`
  ADD CONSTRAINT `group_id_foreign` FOREIGN KEY (`group_id`) REFERENCES `wc_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
为什么在执行创建表的代码时出错


使用一个参考字段(
wc\u groups
id
)来约束多个外键是什么意思?

我不明白你说的多个外键是什么意思

但是wc_团队创建查询的问题是,您有一个丢失的、落后的查询

 `group_id` int(2) unsigned NOT NULL,
但是你也错过了主键,所以我想你需要这个

CREATE TABLE IF NOT EXISTS `wc_teams` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `group_id` int(2) unsigned NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

我想创建一个类似于wc\u matches的结构。group\u id->wc\u groups.id wc\u teams.group\u id->wc\u groups。id@user3395037我看你接受了答案,所以我想现在一切都正常了?因为问题不是2个外键,而是您的wc\u teams表从未创建。我想创建这样的结构wc\u matches.group\u id->wc\u groups.id wc\u teams.group\u id->wc\u groups.id