SQL Server 2008的批量插入功能

一次插入多行是SQL Server 2008的新功能。在插入的语句中添加逗号分隔即可:

INSERT INTO person
(id, name, age)
VALUES
(1, 'Kelvin', 22),
(2, 'ini_always', 23);

在数据比较多时,执行批量插入能提升性能。但是在SQL Server 2008之前的版本中并不提供此功能。

但如果批量插入的数据来自其它表甚至其它数据源,上述方法就不行了,这时就要用INSERT INTO ... SELECT语句,示例如下:

/* 定义一个常量并赋值为7 */
DECLARE
@profileID int
SELECT @profileID=7

/* 定义一个表变量tab_event并插入三条数据 */
DECLARE @tab_event TABLE (
eventType int NOT NULL
)
INSERT @tab_event
VALUES (1), (2), (3)

/* 定义待插入的表变量tab_test */
DECLARE @tab_test TABLE (
profileID int NOT NULL,
eventType int NOT NULL
)

/* 插入三条数据到tab_test,这三条数据部分来自于常量profileID,部分来自于对表变量tab_event查询的结果 */
INSERT @tab_test
(profileID, eventType)
SELECT @profileID, eventType FROM @tab_event
posted @ 2012-02-07 21:14  ini_always  阅读(7072)  评论(0编辑  收藏  举报