NULL 上的 MySQL 默认值

Sha*_*oor 9 mysql default-value

我有下表:

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

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

INSERT INTO Foo (`FirstName`) VALUES('FOO');
Run Code Online (Sandbox Code Playgroud)

当我运行以下查询时:

INSERT INTO Foo (`FirstName`, `LastName`) VALUES('FOO', NULL);
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:

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


我想要实现的是,如果一个值是NULL那么 MySQL 应该使用DEFAULT值。
有人知道解决方案吗?

Bha*_*ama 3

尝试这个

使用NULL而不是 NOT NULL

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

并像这样查询

使用DEFAULT而不是NULL

INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);
Run Code Online (Sandbox Code Playgroud)