我在tsql中创建一个临时表,其中1列具有默认值,如下所示:
DECLARE @MyTable Table (MyName varchar(40) Primary Key not null, Updated SmallInt NULL DEFAULT 0)
当我运行insert语句时,出现“列名或提供的值与表定义不匹配”的错误。但是第二列假设获得默认值,我不想指定它。任何解决方法?
INSERT @MyTable
VALUES ('Value1'),
('Value2')
答案 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)