#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');