SQL Server,可以使用SCOPE_IDENTITY方法取得最后一笔记录的Identity号码,但是如果想取得批量插入的IDENTITY号码,那得想些
这个SCOPE_IDENTITY就有些困难了,只有把inserted虚拟表导入到一个真实存在的表,临时表或是表变量中,方可解决问题。
下面代码,是return最后一笔的IDENTITY号码,
INSERT
INTO
dbo.Member
VALUES
(
'
Maik
'
,
'
1
'
,
'
22
'
,
''
,
'
2600
'
)
SELECT SCOPE_IDENTITY () AS [ SCOPE_IDENTITY ]
SELECT SCOPE_IDENTITY () AS [ SCOPE_IDENTITY ]
如果想一次同时插入多笔记录,它return还是最后一个identity号码,
INSERT
INTO
dbo.Member
VALUES
(
'
Maik
'
,
'
1
'
,
'
22
'
,
''
,
'
2600
'
),(
'
Jack
'
,
'
1
'
,
''
,
''
,
'
2800
'
),(
'
BaLa
'
,
'
1
'
,
''
,
''
,
'
3000
'
)
SELECT SCOPE_IDENTITY () AS [ SCOPE_IDENTITY ]
SELECT SCOPE_IDENTITY () AS [ SCOPE_IDENTITY ]
解决这个办法,可以使用OUTPUT功能,
INSERT
INTO
[
dbo
]
.
[
Member
]
OUTPUT inserted.
[
MemberId
]
VALUES ( ' Maik ' , ' 1 ' , ' 22 ' , '' , ' 2600 ' ),( ' Jack ' , ' 1 ' , '' , '' , ' 2800 ' ),( ' BaLa ' , ' 1 ' , '' , '' , ' 3000 ' );
VALUES ( ' Maik ' , ' 1 ' , ' 22 ' , '' , ' 2600 ' ),( ' Jack ' , ' 1 ' , '' , '' , ' 2800 ' ),( ' BaLa ' , ' 1 ' , '' , '' , ' 3000 ' );
执行结果,
MemberId
----------
3
4
5
当然,也可以把这个结果导入到一个真实存在的表,临时表或是表变量中。相应实例可以查看下面链接:
SQL Server如何使用表变量
SQL定义自己定义表类型
SQL循环26个字母插入到一个表中