Как вставить значение по умолчанию в ненулевой столбец, если значение равно нулю в Maria db

У меня есть структура таблицы ниже:

CREATE TABLE Table_1(
    id int AutoIncrement PRIMARY KEY,
    message varchar(64) NOT NULL DEFAULT 'NA'
)

Я запускаю следующий запрос:

INSERT INTO Table_1 (id, message) VALUES (null, null);

Это дает мне ошибку:

Error Code: 1048. Column 'message' cannot be null

Я хочу получить результат ниже с тем же запросом на вставку.

Выход

|id | message|
|1  | NA     |

Есть ли какие-либо настройки MySQL? Спасибо


person SAM    schedule 22.08.2017    source источник


Ответы (2)


Ваш вопрос на первый взгляд сложен, потому что концептуально вы хотите вставить без указания значения первичного ключа или сообщения, вместо этого полностью полагаясь на MySQL для предоставления значений по умолчанию.

Чтобы вставить пустую строку, просто укажите столбец первичного ключа вместе с одним NULL вместо VALUES:

CREATE TABLE Table_1(
    id int PRIMARY KEY AUTO_INCREMENT,
    message varchar(64) NOT NULL DEFAULT 'NA'
);

INSERT INTO Table_1 (id) VALUES (NULL);
SELECT * FROM Table_1;

Вывод:

   id | message
1  1  | NA

Демо здесь:

Рекстестер

person Tim Biegeleisen    schedule 22.08.2017
comment
Мне нужен столбец «сообщение» в списке вставки, например INSERT INTO Table_1 (id, message) VALUES (NULL, NULL); - person SAM; 22.08.2017
comment
@SAM Если вы хотите это сделать, используйте мой ответ. Если у вас есть другие столбцы, сообщите нам, что это такое, и ответ может быть обновлен. - person Tim Biegeleisen; 22.08.2017

У вас была синтаксическая ошибка, это сработает.

CREATE TABLE Table_1(
    id int NOT NULL AUTO_INCREMENT,
    message varchar(64) DEFAULT 'NA',
    PRIMARY KEY (id)
)

Если вы хотите добавить значение Null, вам не следует добавлять эти ограничения в структуру таблицы.

person Noob    schedule 22.08.2017
comment
Это не то, что спросили. Другой ответ правильный. - person Roemer; 22.05.2020