Mysql 在insert语句中生成所需的值

Mysql 在insert语句中生成所需的值,mysql,sql,Mysql,Sql,我想在我的表中设置ItemCode值,在使用insert语句时,我想使用notnull约束,但我不知道这是否正确。这是我桌子的结构 CREATE TABLE Item ( ID INT auto_increment, ItemCode VARCHAR(10) unique NOT NULL, ItemDescription VARCHAR(50), Price DECIMAL(4,2) DEFAULT 0, PRIMARY KEY(ID) ); 使用n

我想在我的表中设置
ItemCode
值,在使用insert语句时,我想使用
notnull
约束,但我不知道这是否正确。这是我桌子的结构

CREATE TABLE Item
(
    ID INT auto_increment,
    ItemCode VARCHAR(10) unique NOT NULL,
    ItemDescription VARCHAR(50),
    Price DECIMAL(4,2) DEFAULT 0,

    PRIMARY KEY(ID)
);

使用not null将仅在记录保存到数据库时强制此字段的值。如果用户输入一串空格,它仍然会被保存。您需要将数据验证规则放在应用程序的前端。

使用not null将仅在记录保存到数据库时强制此字段的值。如果用户输入一串空格,它仍然会被保存。您需要将数据验证规则放在应用程序的前端。

默认情况下,SQL中的列接受
NULL
值。并且,如果在
INSERT
中没有提供值,则默认值为
NULL

为列声明
默认值(“约束”)时,可以在未提供值的情况下更改插入的值。您尚未声明
默认值
,因此使用了
NULL

然后,
notnull
阻止插入
NULL
值。因此,如果没有提供值,将使用
默认值。但是,如果没有
默认值
,则会发生错误——违反
非空
约束

简而言之,你的定义就是你想要的


注意:触发器可能会影响此功能,因此以上假设触发器不使用该列中的值。

默认情况下,SQL中的列接受
NULL
值。并且,如果插入的
中未提供值,则默认值为
NULL

为列声明
默认值(“约束”)时,可以在未提供值的情况下更改插入的值。您尚未声明
默认值
,因此使用了
NULL

然后,
notnull
阻止插入
NULL
值。因此,如果没有提供值,将使用
默认值。但是,如果没有
默认值
,则会发生错误——违反
非空
约束

简而言之,你的定义就是你想要的


注意:触发器可能会影响此功能,因此,上面假设触发器不使用该列中的值。

您的代码有什么问题?我只是想确定我是否正确执行了该操作。当用户尝试向表中插入值时,应该需要ItemCode值。为什么不自己测试并插入?请尝试。您知道,如果它正常工作,您将使用检查约束来防止只使用空格的值。但是
auto_increment
表明您使用的是MySQL,但仍然不支持检查约束您的代码有什么问题?我只想确定我是否正确执行了操作,当用户尝试向表中插入值时,ItemCode值应该是必需的。为什么您不自己测试并执行插入操作?请尝试。您知道,如果它正常工作,您将使用检查约束来防止只使用空格的值。但是
auto_increment
表明您正在使用MySQL,并且仍然不支持检查约束