MySql默认值为Null

时间:2018-06-07 07:29:13

标签: mysql default-value

我有下表

CREATE TABLE `Foo` (
`id`  int NOT NULL ,
`FirstName`  varchar(255) NULL ,
`LastName`  varchar(255) NOT NULL DEFAULT  'NONE' ,
PRIMARY KEY (`id`)
);

当我运行以下查询时,它采用默认值= NONE

INSERT INTO Foo ( `FirstName`) VALUES('FOO');

当我运行以下查询时

INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', NULL);

它出错了

`[Err] 1048 - Column 'LastName' cannot be null`

我想如果value为NULL,那么mysql应该使用默认值..任何更新?

3 个答案:

答案 0 :(得分:1)

试试这个

使用NULL代替NOT NULL

CREATE TABLE `Foo` (
`id`  int NOT NULL ,
`FirstName`  varchar(255) NULL ,
`LastName`  varchar(255) NULL DEFAULT  'NONE' , 
PRIMARY KEY (`id`)
);

并像这样查询

使用DEFAULT代替NULL

INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);

答案 1 :(得分:0)

尝试删除NOT NULL约束。

INSERT INTO Foo(<input type="text" id="myInput" placeholder="Search for names.." title="Type in a name"> <ul id="myUL"></ul>)VALUES('FOO'); 当你没有手动向lastname插入任何值时,你实际上是在表中插入'none'(默认值),因此NOT NULL约束传递。

INSERT INTO Foo(FirstNameFirstName)VALUES('FOO',NULL); 在这里,您手动将NULL插入lastname,因此您实际上是在表中插入'NULL',因此NOT NULL约束失败。

答案 2 :(得分:0)

当您使用NULL时,它意味着您要将NULL设置为值,这对于NOT NULL列不会发生。

您可以使用DEFAULT显式插入默认值:

INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);