我有下表:
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应该使用默认值。
有人知道解决办法吗?
3条答案
按热度按时间kiayqfof1#
尝试删除not null约束。
当您不手动将任何值插入到
lastname
你真的在插入'none'(default value)
进了你的tableNOT NULL
约束传递。在这里插入
NULL
手动至lastname
因此你真的在插入NULL
进了你的tableNOT NULL
约束失败。解决方案:
使用
COALESCE()
函数,该函数将返回非空参数。mftmpeh82#
当您使用null时,这意味着您要将null设置为值,这在notnull列中是不可能发生的。
可以使用
DEFAULT
:wqsoz72f3#
试试这个
使用
NULL
而不是NOT NULL
```CREATE TABLE
Foo
(id
int NOT NULL ,FirstName
varchar(255) NULL ,LastName
varchar(255) NULL DEFAULT 'NONE' ,PRIMARY KEY (
id
));