关于SQL SERVER里面获取自增列的标识值的问题

有一张表,主键是自增列,往里面插入一条数据之后,用select@@identity获取到刚刚插入的标识的值但问题是在我插入数据到我select@@identity之间如果... 有一张表,主键是自增列,往里面插入一条数据之后,用select @@identity获取到刚刚插入的标识的值 但问题是在我插入数据到我select @@identity之间如果我又插入了另一个表(也是子增列主键)的数据,我获取出来的就不是我的之前的那个表的标识列的值了。请问这个是如何解决的?select @@identity根本就没有指定任何表,以表示获取的是哪一张表的标识列 展开
 我来答
nandaowo
2009-12-21 · TA获得超过195个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:190万
展开全部
你的意思是获取某个表中最后擦汗如的id值吧,这样看看:
假定表明为temp,id列为ID
SELECT MAX(ID) FROM TEMP
因为自增列刚插入的ID肯定是最大的
童洲依胤雅
2019-01-27 · TA获得超过3729个赞
知道大有可为答主
回答量:3091
采纳率:29%
帮助的人:186万
展开全部
你的主键是设置的int类型么?
你又没问别人(用户)单位的人有多少
可能人不多
但是
考虑每个人不止一条记录了么
我认为是你的类型有问题该bigint
还有
你的记录一定是都没删除过的吧?
不要的数据一定的想办法清理掉
好的软件必须有回收机制
不要的数据最好给它清了
不然会占用你值空间
想你本来有9999条记录
标识列则已经达到9999
再添1条
int类型就无法承受
编号最好也不要用标识
因为即使你有了回收机制删除了不要的信息
你也无法向标识列插入值
所以软件在开始设计的时候必须尽一切可能的了解对方实际的情况
以及日常工作方式
需求分析还是非常重要的
按我提出来的试试
再有问题就补充
我再来看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dgstevetang
推荐于2016-03-21 · 超过19用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:0
展开全部
用Select IDENT_CURRENT(TableName)
IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。

语法
IDENT_CURRENT('table_name')

参数
table_name

是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。

返回类型
sql_variant

注释
IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。

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

SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式