为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕莱坞森 2019-11-29 14:39:04
我有一个表,其中有几个ID列指向其他表。我希望只有在将数据放入其中时,外键才能强制完整性。如果我稍后进行更新以填充该列,则它还应该检查约束。(这可能取决于数据库服务器,我使用的是MySQL和InnoDB表类型)我相信这是一个合理的期望,但是如果我错了,请纠正我。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

是的,这将按您预期的那样工作。不幸的是,我似乎很难在MySQL手册中找到对此的明确声明。


外键表示该值必须存在于另一个表中。NULL表示没有值,因此当您将列设置为NULL时,尝试对其施加约束是没有意义的。


查看完整回答
反对 回复 2019-11-29
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

上面的作品,但这不是。注意ON DELETE CASCADE


CREATE 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)


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1311 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信