带外键的表列可以为NULL吗?

我有一个表,其中有几个ID列指向其他表。

我希望只有在将数据放入其中时,外键才能强制完整性。如果我稍后进行更新以填充该列,则它还应该检查约束。

(这可能取决于数据库服务器,我使用的是MySQL和InnoDB表类型)

我相信这是一个合理的期望,但是如果我错了,请纠正我。


慕莱坞森
浏览 1312回答 3
3回答

不负相思意

是的,这将按您预期的那样工作。不幸的是,我似乎很难在MySQL手册中找到对此的明确声明。外键表示该值必须存在于另一个表中。NULL表示没有值,因此当您将列设置为NULL时,尝试对其施加约束是没有意义的。

白衣染霜花

上面的作品,但这不是。注意ON DELETE CASCADECREATE DATABASE t;USE t;CREATE TABLE parent (id INT NOT NULL,                 PRIMARY KEY (id)) ENGINE=INNODB;CREATE TABLE child (id INT NULL,                 parent_id INT NULL,                FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE) ENGINE=INNODB;INSERT INTO child (id, parent_id) VALUES (1, NULL);-- Query OK, 1 row affected (0.01 sec)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL