MS SQL Server ВСТАВЬТЕ значение, если NULL

Добрый день

У меня есть Таблица1:

COLUMN1    COLUMN2   Column3
----------------------------
1             A        K
2             NULL     K
3             NULL     D
...           ...      ...

я нуждаюсь

COLUMN1    COLUMN2   Column3
----------------------------
1             A        A
2             K        K
3             D        D
...           ...      ...

Я застрял в своем коде и не могу понять, почему сервер пытается вставить в COLUMN3?

Спасибо за любые мнения

INSERT INTO Table1 (COLUMN2)
    SELECT CLoumn3
    FROM Table1
    WHERE Column2 IS NULL; 

Результирующая ошибка:

Сообщение 515, уровень 16, состояние 2, строка 1
Не удается вставить значение NULL в столбец "Столбец3" таблицы "ТАБЛИЦА1"; столбец не допускает пустых значений. ВСТАВИТЬ не удается.

Это только пример исходной таблицы с большим количеством столбцов.


person Luka    schedule 03.08.2017    source источник
comment
Вам нужно UPDATE, а не INSERT   -  person HoneyBadger    schedule 03.08.2017
comment
Итак, вы хотите добавить новые записи или обновить существующие?   -  person Rokuto    schedule 03.08.2017
comment
ОБНОВЛЕНИЕ Благодаря GOrdon   -  person Luka    schedule 03.08.2017
comment
Просто чтобы уточнить исходную ошибку, которую вы получили: всякий раз, когда вы ВСТАВЛЯЕТЕ строку в таблицу, эта строка вставляется для всех столбцов. Если вы не укажете значение для столбца, SQL Server попытается вставить NULL. Некоторые столбцы могут быть определены как не допускающие NULL, поэтому любая вставка завершится ошибкой, если для этого столбца не указано значение. В вашем случае вы указывали значение для Table1.COLUMN2, но не для Table1.COLUMN3. Похоже, COLUMN3 не допускает NULL, поэтому вставка не удалась.   -  person Nathan Griffiths    schedule 03.08.2017


Ответы (1)


Я думаю, вы хотите update:

update table1
    set column2 = column3
    where column2 is null;

insert вставляет новые строки в таблицу. update изменяет значения в существующих строках.

person Gordon Linoff    schedule 03.08.2017