опустить столбцы и значения в моем запросе вставки? - PullRequest
0 голосов
/ 30 октября 2011

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

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

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

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

Ответы [ 5 ]

4 голосов
/ 30 октября 2011

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

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

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

2 голосов
/ 30 октября 2011

Если столбец C определен как ненулевой и не определено значение по умолчанию, его необходимо включить в вставку.

1 голос
/ 30 октября 2011
INSERT INTO X(A,B,C)
VALUES
(NULL, 'hello', '');

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

INSERT INTO X(A,B)
VALUES
(NULL, 'hello');
1 голос
/ 30 октября 2011

Попробуйте INSERT INTO X (B) VALUES ('hello');

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

1 голос
/ 30 октября 2011

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

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

ALTER TABLE mytable MODIFY ColumnC int NULL;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...