这里是我的SQL语句,我得到Error 170 Incorrect syntax near ',' at line 4
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
VALUES
( 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_004' ),
( 19989 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_003' ) ,
( 19997 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CAU0171_WO_015' ) ,
( 19998 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_003' ) ,
( 19999 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_001' ) ,
( 20001 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_AU_007' ) ,
( 20002 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_PO_011' ) ,
( 20003 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_ILI0758_RS_008' ) ,
( 20004 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_WO_002' ) ,
( 20005 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_WO_003' ) ,
( 20006 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_TR_001' ) ,
( 20007 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CIT0550_RS_001' ) ,
( 20008 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_CSL0152_AU_001' )
我猜测,这是SQL Server 2005或以下
来源: http://msdn.microsoft.com/en-us/library/ms174335%28v=sql.100%29.aspx
SQL Server 2008中引入了的Transact-SQL行构造函数(又称为表值构造函数) 在一个INSERT语句中指定多行 。 行构造由具有用括号括起来和由逗号分隔的多个值列出的单个VALUES子句的。 欲了解更多信息,请参阅表值构造(的Transact-SQL)。
您不能执行多行之前比2008年有两种方式做到这一点插入到SQL Server:
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
SELECT 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_004' UNION ALL
SELECT 19989 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_FS_003'
...
要么
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
VALUES
( 19988 , 72 , 1 , 0 , 0 , GETDATE() , GETDATE() , 'H_KDA1559_ST_004' )
INSERT INTO SEO_Permalink_Test
( IDObjekt ,IDType ,IDLanguage ,StateSEOName ,StateSEOPermalink ,DatumErstellungSEOName ,DatumLetzteAenderungSEOName ,SEOName)
VALUES
( 19989 ,
我将与一号路走,因为它是更简洁。
只是语法问题:你需要为每个记录单独的INSERT语句。
另一替代方案,这可能会增加可读性,是构建语句像下面
INSERT INTO TableName(col1, col2, col3)
SELECT( a, b, c)
UNION SELECT( d, e, f)
UNION SELECT( g, h, i)
您插入语句在我的免费SQL错误解析。
INSERT INTO MyTable (FirstCol, SecondCol)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)
http://blog.sqlauthority.com/2008/07/02/sql-server-2008-insert-multiple-records-using-one-insert-statement-use-of-row-constructor/