1

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

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

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

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

4 回答 4

3

您需要指定获得值的列,并保留那些没有的列:

INSERT @MyTable (MyName) VALUES ('Value1')
于 2013-07-04T11:35:33.803 回答
1

使用列列表

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

或根据@AlexK 的回答使用 DEFAULT 关键字

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

于 2013-07-04T11:35:23.650 回答
1

检查您的语法 - 看起来您有太多的左括号和右括号,这就是您遇到该错误的原因。我认为它应该看起来更像这样:

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

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

INSERT INTO @MyTable (col1, col2)
VALUES ('Value1','Value2')
于 2013-07-04T11:42:00.283 回答
0

您需要使用DEFAULT关键字;

INSERT @MyTable 
VALUES ('Value1', DEFAULT),
       ('Value2', DEFAULT)
于 2013-07-04T11:34:11.367 回答