mysql默认值为空

wecizke3  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(517)

我有下表:

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 我想实现的是如果一个值 NULL 那么mysql应该使用默认值。
有人知道解决办法吗?

kiayqfof

kiayqfof1#

尝试删除not null约束。

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

当您不手动将任何值插入到 lastname 你真的在插入 'none'(default value) 进了你的table NOT NULL 约束传递。

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

在这里插入 NULL 手动至 lastname 因此你真的在插入 NULL 进了你的table NOT NULL 约束失败。
解决方案:
使用 COALESCE() 函数,该函数将返回非空参数。

INSERT INTO Foo ( FirstName, LastName ) VALUES('FOO', COALESCE(@value, default));
mftmpeh8

mftmpeh82#

当您使用null时,这意味着您要将null设置为值,这在notnull列中是不可能发生的。
可以使用 DEFAULT :

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

wqsoz72f3#

试试这个
使用 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);

相关问题