我在 tsql 中创建一个临时表,其中 1 列的默认值如下:
DECLARE @MyTable Table (MyName varchar(40) Primary Key not null, Updated SmallInt NULL DEFAULT 0)
当我运行插入语句时,我收到“列名或提供的值的数量与表定义不匹配”的错误。但第二列是假设获得默认值,我不想指定。任何解决方法?
INSERT @MyTable
VALUES ('Value1'),
('Value2')
我在 tsql 中创建一个临时表,其中 1 列的默认值如下:
DECLARE @MyTable Table (MyName varchar(40) Primary Key not null, Updated SmallInt NULL DEFAULT 0)
当我运行插入语句时,我收到“列名或提供的值的数量与表定义不匹配”的错误。但第二列是假设获得默认值,我不想指定。任何解决方法?
INSERT @MyTable
VALUES ('Value1'),
('Value2')
您需要指定获得值的列,并保留那些没有的列:
INSERT @MyTable (MyName) VALUES ('Value1')
使用列列表
INSERT @MyTable (MyName)
VALUES ('Value1'),('Value2')
或根据@AlexK 的回答使用 DEFAULT 关键字
使用列列表允许表定义有所改变(比如添加另一个默认列)而不更改 INSERTS
检查您的语法 - 看起来您有太多的左括号和右括号,这就是您遇到该错误的原因。我认为它应该看起来更像这样:
INSERT INTO @MyTable
VALUES ('Value1','Value2')
或者,正如其他人所提到的,您也可以尝试指定列:
INSERT INTO @MyTable (col1, col2)
VALUES ('Value1','Value2')
您需要使用DEFAULT关键字;
INSERT @MyTable
VALUES ('Value1', DEFAULT),
('Value2', DEFAULT)