mysql表是否可以为引用不同表的主键列接受空值?
我有一个表,它有一个列,该列保存另一个表中一行的id。但是,在填充表A时,表B可能有一行准备好了,也可能没有 我的问题是,有没有可能让mysql阻止输入无效值,但允许空值?或者外键是否需要有效的相关值 所以。。。我要寻找的(在伪代码中)是: 我之所以需要这样做,是因为我有一个鸡和蛋的问题,在这个问题上,提前创建people表中的行是非常有意义的(在本例中,我创建了组,并希望它们预先存在加入它们的人)。我意识到这个例子很愚蠢,我只想把组id放在person表中,而不是相反,但在我的实际问题中,这是行不通的mysql表是否可以为引用不同表的主键列接受空值?,mysql,Mysql,我有一个表,它有一个列,该列保存另一个表中一行的id。但是,在填充表A时,表B可能有一行准备好了,也可能没有 我的问题是,有没有可能让mysql阻止输入无效值,但允许空值?或者外键是否需要有效的相关值 所以。。。我要寻找的(在伪代码中)是: 我之所以需要这样做,是因为我有一个鸡和蛋的问题,在这个问题上,提前创建people表中的行是非常有意义的(在本例中,我创建了组,并希望它们预先存在加入它们的人)。我意识到这个例子很愚蠢,我只想把组id放在person表中,而不是相反,但在我的实际问题中,这是
我只是好奇,如果我需要允许任何和所有的价值观,以使这项工作,或者,如果有允许null的方法。如果将列设置为可空,则即使它是引用另一个表中的列的外键,也可以包含null。如果将列设置为可空,则即使它是引用另一个表中的列的外键,也可以包含null。外键可以为空
输入引用表中的行时,必须更新该行以指向该行。外键可以为空
输入引用表中的行时,必须更新该行以指向该行。通过将列的可选性设置为NULL,将外键列设置为接受NULL:
DROP TABLE IF EXISTS `example`.`tableb`;
CREATE TABLE `example`.`tableb` (
`id` int(10) unsigned NOT NULL auto_increment,
`person_id` int(10) unsigned default NULL, -- notice, !say "NOT NULL" like id
PRIMARY KEY (`id`),
CONSTRAINT `FK_tableb_1` FOREIGN KEY (`person_id`) REFERENCES `tablea` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
也就是说,在尝试将空值插入tableb引用列之前,tablea中必须至少有一条记录。否则,MySQL将抛出一个错误(对我来说,无论如何,在4.1上)。通过将列的可选性设置为NULL,将外键列设置为接受NULL:
DROP TABLE IF EXISTS `example`.`tableb`;
CREATE TABLE `example`.`tableb` (
`id` int(10) unsigned NOT NULL auto_increment,
`person_id` int(10) unsigned default NULL, -- notice, !say "NOT NULL" like id
PRIMARY KEY (`id`),
CONSTRAINT `FK_tableb_1` FOREIGN KEY (`person_id`) REFERENCES `tablea` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
也就是说,在尝试将空值插入tableb引用列之前,tablea中必须至少有一条记录。否则,MySQL将抛出一个错误(对我来说,无论如何,在4.1上)。应该是
外键(person\u id)
?另外,--注意
行在MySQL查询浏览器中运行时给了我一个错误。由于某种原因,--
@Mark Byers:Corrected,thx后面必须有一个空格,用于注释与物品的拧紧。这应该是外键(person\u id)
?另外,--注意
行在MySQL查询浏览器中运行时给了我一个错误。由于某种原因,--
@Mark Byers:Corrected后面必须有一个空格,以获取有关注释拧东西的注释。