Значения по умолчанию в Insert Select в SQL - PullRequest
3 голосов
/ 27 ноября 2009

Как передать значения по умолчанию в конструкции Insert Select в SQL?

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

    create table1 (field1 int, field2 int, field3 int default 1337)
    create table2 (field1 int, field2 int)

Я хочу вставить table2 в table1 с конструкцией, подобной этой:

    insert into table1 select field1, field2, DEFAULT from table2

Можно ли использовать что-то вместо DEFAULT в моем примере для выполнения задачи? Как ранее выбранные таблицы обычно вставляются со значениями по умолчанию?

1 Ответ

6 голосов
/ 27 ноября 2009

Попробуйте

INSERT INTO table1 (field1, field2)
SELECT field1, field2 FROM table2

Я проверял это с использованием SQL Server 2005

DECLARE @Table1 TABLE(
        field1 INT,
        field2 INT,
        field3 INT DEFAULT 1337
)

INSERT INTO @Table1 (field1,field2,field3) SELECT 1, 2, 3

DECLARE @Table2 TABLE(
        field1 INT,
        field2 INT
)

INSERT INTO @Table2 (field1,field2) SELECT 15, 16

INSERT INTO @Table1 (field1,field2)
SELECT  field1,
        field2
FROM    @Table2

SELECT * FROM @Table1
...