Вставьте значения NULL и DEFAULT с помощью оператора INSERT / SELECT - PullRequest
3 голосов
/ 22 апреля 2009

В MICROSOFT SQL SERVER есть следующая таблица:

CREATE TABLE [T1]
(
    [ID] int IDENTITY (1, 1) NOT NULL,
    [col1] int NOT NULL,
    [col2] int NOT NULL,
    [col3] int NULL,
    [col4] datetime NOT NULL DEFAULT (getdate()),
    [col5] datetime NOT NULL DEFAULT (getdate())
)

Я хочу написать оператор вставки, который выберет 2 столбца из другой таблицы и вставит все остальные столбцы как NULL или по умолчанию. Это то, что я пробовал до сих пор (но это не работает):

    INSERT INTO [T1] ([col1],[col2], [COL3])
SELECT [1column],[2column],NULL
FROM [T2]

Когда я щелкаю правой кнопкой мыши по таблице T1 и выбираю открытую таблицу, таблица имеет только 2 столбца, даже если в столбце «папка» в проводнике объектов есть все столбцы

Чего я хочу добиться, так это иметь в T1: в Col1 и COL2 результат SELECT, а в COL3 NULL и в COL4 и COL5 значение по умолчанию!

Ответы [ 3 ]

2 голосов
/ 22 апреля 2009
INSERT INTO [T1] ([col1], [col2], [COL3])
SELECT [1column],[2column],NULL
FROM [T2]

Это должно работать нормально, только что проверил:

INSERT
INTO    [T1] ([col1], [col2], [col3])
SELECT  1, 2, NULL

SELECT  *
FROM    [T1]

id    col1  col2  col3  col4                     col5
---   ---   ---   ---   ---                      ---
1     1     2     NULL  2009-04-22 15:46:47.090  2009-04-22 15:46:47.090

Какую именно ошибку вы получаете?

1 голос
/ 22 апреля 2009

Когда вы выбираете открыть таблицу, и у вас уже есть окно с открытой ранее таблицей, оно покажет вам это окно вместо того, чтобы открывать другое окно. То, что вы видите, является старым результатом, когда таблица имела только два столбца.

Закройте это окно и снова откройте таблицу, чтобы увидеть текущее состояние таблицы.

1 голос
/ 22 апреля 2009

Таблица неверна, запрос неправильный или разрешения неправильные.

  1. Щелкните правой кнопкой мыши на имени таблицы в SSMS и нажмите Обновить. Вы видите 5 столбцов? SELECT * FROM T1 даст то, что у тебя есть.

  2. Когда вы щелкните правой кнопкой мыши .. откройте таблицу, нажмите кнопку [SQL] на панели инструментов, вы видите ВЫБРАТЬ * ОТ T1?

  3. У вас нет разрешений SELECT для других столбцов, но есть INSERT (маловероятно), поэтому видимость метаданных мешает работе SELECT *.

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