使用默认列插入sql临时表

时间:2013-07-04 11:30:07

标签: tsql insert temp-tables

我在tsql中创建一个临时表,其中1列具有默认值,如下所示:

DECLARE @MyTable Table (MyName varchar(40) Primary Key not null, Updated SmallInt NULL DEFAULT 0)

当我运行insert语句时,出现“列名或提供的值与表定义不匹配”的错误。但是第二列假设获得默认值,我不想指定它。任何解决方法?

INSERT @MyTable 
VALUES ('Value1'),
       ('Value2')

4 个答案:

答案 0 :(得分:2)

您需要指定获取值的列,并保留不存在的列:

INSERT @MyTable (MyName) VALUES ('Value1')

答案 1 :(得分:1)

使用列列表

INSERT @MyTable (MyName)
VALUES ('Value1'),('Value2')

或@ AlexK的回答中的DEFAULT关键字

使用列列表允许表定义稍微改变(比如添加默认的另一列)而不更改INSERTS

答案 2 :(得分:1)

检查你的语法 - 看起来你有太多的开始和结束的parens,这就是你遇到这个错误的原因。我认为看起来应该更像这样:

INSERT INTO @MyTable 
VALUES ('Value1','Value2')

或者,正如其他人所提到的,您也可以尝试指定列:

INSERT INTO @MyTable (col1, col2)
VALUES ('Value1','Value2')

答案 3 :(得分:0)

您需要使用DEFAULT关键字;

INSERT @MyTable 
VALUES ('Value1', DEFAULT),
       ('Value2', DEFAULT)