gpt4 book ai didi

mysql - 非空困惑

转载 作者:行者123 更新时间:2023-11-29 22:29:46 25 4
gpt4 key购买 nike

phpMyAdmin 中,当我们创建表时,默认情况下所有字段都没有空约束...据我所知,当我们将约束设置为非空时...它不允许用户将字段保留为空根据此链接,不为空......

http://www.techopedia.com/definition/27370/not-null-constraint

现在我的问题是..根据此链接,不为空意味着每行数据都必须包含一个值 - 在插入或更新操作期间不能将其留空......但是当我以编程方式插入数据(如 insert into )时,我能够在两个字段中插入数据,而其他字段则保持空白,尽管该字段没有空约束...并且仍然不会生成任何错误...所以我不明白 not null 是如何工作的???

例如,我创建一个包含 5 个字段的表...

   create table myTable 
(
Column1 int not null,
Column2 int not null,
Column3 int not null,
Column4 int not null,
Column5 int not null,
)

并在两个字段中插入值,例如

 "INSERT INTO myTable (column1,column2) VALUES(10,20)";  

但其他字段我没有给出任何 '',因此它需要 0 作为值......并且我仍然能够毫无错误地插入数据......这怎么可能?

最佳答案

所有具有 NOT NULL 约束集的内容都需要包含数据。如果您以编程方式插入数据并且没有为 NOT NULL 单元格插入数据,那么您将收到 SQL 错误。

例如你有这张表:

CREATE TABLE test (
id INTEGER PRIMARY_KEY AUTO_INCREMENT,
some_value INTEGER NOT NULL,
some_other_value INTEGER);

然后 some_value 将包含返回的每个数据集中的数据,some_other_value 可能包含也可能不包含返回的每个数据集中的数据。解决这个问题的唯一方法是:

CREATE TABLE test (
id INTEGER PRIMARY_KEY AUTO_INCREMENT,
some_value INTEGER NOT NULL DEFAULT 0,
some_other_value INTEGER);

如果您现在以编程方式设置数据并且不为 some_value 设置数据,则 some_value 将默认为 0(或您在表创建时设置默认值的任何数据)。

关于mysql - 非空困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com