现在有这样一张表有两个字段一个是ID,一个是NAME
ID是自增的
NAME是可重复的
先在要写一个存储过程插入一行数据,也就是插入一个NAME
然后获取它的ID
请问要用什么办法?
有没有什么临时表啊,全局变量之类是来存储这个自增ID的?
ID是自增的
NAME是可重复的
先在要写一个存储过程插入一行数据,也就是插入一个NAME
然后获取它的ID
请问要用什么办法?
有没有什么临时表啊,全局变量之类是来存储这个自增ID的?
http://blog.csdn.net/sdhdy/archive/2009/04/26/4126265.aspx--@@IDENTITY和SCOPE_IDENTITY和IDENT_CURRENT的区别
@@IDENTITY--是得到当前会话的所有作用域的最后插入的IDENTITY值。
SCOPE_IDENTITY--是得到当前会话的当前作用域的最后插入的IDENTITY值。
IDENT_CURRENT--是得到指定表的最后插入的IDENTITY值,与会话、作用域无关。
--一个会话,就是一个用户连接。
--一个作用域就是一个模块——存储过程、触发器、函数或批处理。
=========================================--和标识有关的几个函数。
select ident_current('tablename')--标识当前值
select ident_incr('tablename')--标识增量
select ident_seed('tablename')--标识种子
@n int
@name varchar(10)
as
insert tb
values(@name)
set @n=(select max(id) from tb )
print rtrim(@N)exec k '小麦'
@name varchar(10)
as
declare @n int
insert tb
values(@name)
set @n=(select max(id) from tb )
print rtrim(@N)exec k '小麦'
select SCOPE_IDENTITY()
-- -----------t_mac 小编-------------------
--------------------希望有天成为大虾----
-- =========================================IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(id int identity(1,1),name varchar(10))
go
insert tb SELECT 'a'
UNION ALL SELECT 'b'
go
create proc k4
@name varchar(10)
as
declare @n int
insert tb
values(@name)
set @n=(select max(id) from tb )
print '现在的ID为'+rtrim(@N)
exec k4 '小麦'现在的ID为3
go