在SQL Server 2005中,我试图弄清楚为什么我不能在一个表中插入多个字段。下面的查询插入一条记录,可以正常工作:
INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test')
但是,以下指定多个值的查询失败:
INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test'),(1001,N'test2')
我收到此消息:
Msg 102, Level 15, State 1, Line 5 Incorrect syntax near ','.
当我在SQL Sever Management Studio中查找INSERT的帮助时,其中一个示例显示了使用的“值”语法(括号内的值组,并用逗号分隔)。我在SQL Server Management Studio中找到的帮助文档看起来像是针对SQL Server 2008的,所以这也许就是插入无法正常工作的原因。无论哪种方式,我都无法弄清楚为什么它不起作用。
您使用的语法是SQL Server 2008的新语法:
对于SQL Server 2005,您将必须使用多个INSERT语句:
INSERT
INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1000,N'test') INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) VALUES (1001,N'test2')
另一种选择是使用UNION ALL:
UNION ALL
INSERT INTO [MyDB].[dbo].[MyTable] ([FieldID] ,[Description]) SELECT 1000, N'test' UNION ALL SELECT 1001, N'test2'