关于SQL SERVER里面获取自增列的标识值的问题
有一张表,主键是自增列,往里面插入一条数据之后,用select@@identity获取到刚刚插入的标识的值但问题是在我插入数据到我select@@identity之间如果...
有一张表,主键是自增列,往里面插入一条数据之后,用select @@identity获取到刚刚插入的标识的值 但问题是在我插入数据到我select @@identity之间如果我又插入了另一个表(也是子增列主键)的数据,我获取出来的就不是我的之前的那个表的标识列的值了。请问这个是如何解决的?select @@identity根本就没有指定任何表,以表示获取的是哪一张表的标识列
展开
3个回答
展开全部
你的主键是设置的int类型么?
你又没问别人(用户)单位的人有多少
可能人不多
但是
考虑每个人不止一条记录了么
我认为是你的类型有问题该bigint
还有
你的记录一定是都没删除过的吧?
不要的数据一定的想办法清理掉
好的软件必须有回收机制
不要的数据最好给它清了
不然会占用你值空间
想你本来有9999条记录
标识列则已经达到9999
再添1条
int类型就无法承受
编号最好也不要用标识
因为即使你有了回收机制删除了不要的信息
你也无法向标识列插入值
所以软件在开始设计的时候必须尽一切可能的了解对方实际的情况
以及日常工作方式
需求分析还是非常重要的
按我提出来的试试
再有问题就补充
我再来看
你又没问别人(用户)单位的人有多少
可能人不多
但是
考虑每个人不止一条记录了么
我认为是你的类型有问题该bigint
还有
你的记录一定是都没删除过的吧?
不要的数据一定的想办法清理掉
好的软件必须有回收机制
不要的数据最好给它清了
不然会占用你值空间
想你本来有9999条记录
标识列则已经达到9999
再添1条
int类型就无法承受
编号最好也不要用标识
因为即使你有了回收机制删除了不要的信息
你也无法向标识列插入值
所以软件在开始设计的时候必须尽一切可能的了解对方实际的情况
以及日常工作方式
需求分析还是非常重要的
按我提出来的试试
再有问题就补充
我再来看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用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 返回为当前会话和当前作用域中的任何表最后生成的标识值。
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 返回为当前会话和当前作用域中的任何表最后生成的标识值。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询