使用INSERT / SELECT语句插入NULL和DEFAULT值

时间:2009-04-22 11:39:23

标签: sql-server

在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())
)

我想编写一个insert语句,从另一个表中选择2列,并将所有其他列插入为NULL或default。 这是我到目前为止所尝试的(但它不起作用):

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

当我右键单击T1表并选择打开表时,该表只有2列,即使在对象资源管理器的“文件夹”列中也有所有列

我想要实现的是在T1中:在Col1和COL2中SELECT的结果和COL3中的NULL以及COL4和COL5中的默认值!

3 个答案:

答案 0 :(得分:2)

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 :(得分:1)

表错误,查询错误或权限错误。

  1. 右键单击SSMS中的表名,然后单击“刷新”。你看到5列吗? SELECT * FROM T1会给你所拥有的东西。

  2. 当您右键单击打开表格时,单击工具栏上的[SQL]按钮,您看到了吗? SELECT * FROM T1?

  3. 您对其他列没有SELECT权限,但拥有INSERT(不太可能),因此MetaData可见性阻止SELECT *工作。

    < / LI>

答案 2 :(得分:1)

当您选择打开表格并且您已经有一个窗口打开之前的表格时,它将显示该窗口而不是打开另一个窗口。你看到的是表格只有两列时的旧结果。

关闭该窗口并再次打开该表以查看该表的当前状态。