如何在一个存储过程中获取用inser插入的纪录

weekhb 2005-10-03 05:36:23
我有一个表 t (id为自动加1的序号)
id a
1 test
2 test2
我用 insert into t (a) values (test3)
我如何取这条纪录的id值
...全文
149 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
moodboy1982 2005-10-07
  • 打赏
  • 举报
回复
关注一下。
iwl 2005-10-07
  • 打赏
  • 举报
回复
MorningTea(一勺抹茶) 正解
wushimiang12 2005-10-04
  • 打赏
  • 举报
回复
學習中
wushimiang12 2005-10-04
  • 打赏
  • 举报
回复
MorningTea(一勺抹茶) ( )
樓上大哥正解
MorningTea 2005-10-03
  • 打赏
  • 举报
回复
为了避免@@IDENTITY的并发问题,在一般的批处理或存储过程中,最常用也比较保险的还是SCOPE_IDENTITY函数,尤其在处理流程中涉及触发器的情形。
MorningTea 2005-10-03
  • 打赏
  • 举报
回复
就是要获得最后的identity值:

SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。

例如:select ident_current('表名') as '当前标识值'

@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。

例如:select @@identity

SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。
例如:select SCOPE_IDENTITY()


举例:
create table #test(sn int identity(1,1),des varchar(10))
insert into #test select '10'
create table #testA(sn int identity(2,1),des varchar(10))
insert into #testA select '10'
-- (des)
select * from #test
select @@identity as '@@identity'
select ident_current('#test') as 'ident_current'
select SCOPE_IDENTITY() as 'SCOPE_IDENTITY'

/*
(1 row(s) affected)


(1 row(s) affected)

sn des
----------- ----------
1 10

(1 row(s) affected)

@@identity
----------------------------------------
2

(1 row(s) affected)

ident_current
----------------------------------------
1

(1 row(s) affected)

SCOPE_IDENTITY
----------------------------------------
2

(1 row(s) affected)

*/


$扫地僧$ 2005-10-03
  • 打赏
  • 举报
回复
CREATE PROCEDURE Temp_T(@Temp2 as int OUTPUT)
as
insert into t (a) values ('test3')
SELECT @Temp2=@@IDENTITY



DECLARE @Temp as int
exec Temp_T @Temp OUTPUT
print @Temp
weekhb 2005-10-03
  • 打赏
  • 举报
回复
假如id 字段為Identity的話
隻需要這樣 print @@indentity

是int类型,
--------------------------------------------
select id from tablename where a='test3'

问题时a=test3的可能会很多,id才是不重复的,a里面会有重复
lxzm1001 2005-10-03
  • 打赏
  • 举报
回复
select id from tablename where a='test3'
talantlee 2005-10-03
  • 打赏
  • 举报
回复
假如不是的話,那它為null
talantlee 2005-10-03
  • 打赏
  • 举报
回复
假如id 字段為Identity的話
隻需要這樣 print @@indentity

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧