MySql Значение по умолчанию на ноль - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующая таблица

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

, когда я запускаю следующий запрос, он принимает значение по умолчанию = НЕТ

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

Когда я запускаю следующий запрос

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

выдает ошибку

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

Я хочу, если значение равно NULL, тогда mysql должен использовать значение по умолчанию ... любое обновление?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Попробуйте удалить ограничение NOT NULL .

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

Если вы не вставляете какое-либо значение вручную в lastname, вы буквально вставляете 'none'(default value) в таблицу, следовательно, NOT NULLограничение проходит.


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

Здесь вы вставляете NULL вручную в lastname, следовательно, вы буквально вставляете NULL в свою таблицу, следовательно, ограничение NOT NULL не выполняется.

0 голосов
/ 07 июня 2018

Когда вы используете NULL, это означает, что вы хотите установить NULL в качестве значения, чего не может быть для столбца NOT NULL.

Вы можете явно вставить значение по умолчанию, используя DEFAULT:

INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);
0 голосов
/ 07 июня 2018

попробуйте

используйте 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...