опустить столбцы и значения в моем запросе вставки?

#mysql #sql

#mysql #sql

Вопрос:

Я хочу вставить строку в мою таблицу X, которая состоит из столбцов A, B и C.

Как я могу сделать insert into X (A, B) values (NULL, 'hello'); это без получения сообщения об ошибке? Я получаю сообщение об ошибке, когда не включаю столбец C.

Я опускаю третий столбец в SQL-запросе, а A — это автоматическое увеличение идентификатора.

Есть ли способ вставить только первые два столбца, а затем выполнить обновление для третьего столбца?

Комментарии:

1. Можете ли вы опубликовать сообщение об ошибке, которое вы получаете?

2. Пожалуйста, поделитесь своим SQL для создания вашей таблицы. Это зависит от того, есть ли поля, ОТЛИЧНЫЕ от NULL, УНИКАЛЬНЫЕ и т. Д. Пожалуйста, поделитесь своим SQL-скриптом для создания вашей таблицы!

Ответ №1:

Я не уверен в ошибке, которую вы получаете, так что это наполовину предположение.

Скорее всего, ваш C столбец имеет значение NOT NULL и не имеет DEFAULT значения. Это означает, что он должен быть заполнен во время вставки. Если вы хотите пропустить настройку его значения при начальной вставке, вам нужно либо указать значение по умолчанию для столбца, либо разрешить ему быть обнуляемым.

Кроме того, если вы хотите, чтобы столбец A заполнял значение auto-inc, вам нужно будет исключить его из вставки, вместо того чтобы пытаться установить значение NULL

Ответ №2:

Если столбец C определен как not null и не имеет значения по умолчанию, то вы должны включить его в свою вставку.

Ответ №3:

Ваш ColumnC , вероятно, не обнуляется.

Сделайте его обнуляемым с помощью этой команды ALTER (здесь я предположил, что int , но используйте тип данных для ColumnC):

 ALTER TABLE mytable MODIFY ColumnC int NULL;
 

Как только это будет сделано, вы можете исключить ColumnC из своего INSERT заявления и опубликовать UPDATE его позже.

Ответ №4:

Попробуйте ВСТАВИТЬ В ЗНАЧЕНИЯ X (B) (‘привет’);

Вам не нужно ничего вставлять в столбец A, поскольку БД вставит в него правильное значение (с момента его автоматического увеличения). Надеюсь, столбец C обнуляется.

Ответ №5:

 INSERT INTO X(A,B,C)
VALUES
(NULL, 'hello', '');
 

Или вы можете изменить столбец C и разрешить ему быть нулевым. Делая это, вы можете сделать следующее,

 INSERT INTO X(A,B)
VALUES
(NULL, 'hello');