就是在SQL Server的一张表中插入一条数据,怎样获得当前数据的ID? 用Max(id)的方法是有缺点的,比如当前 最大为23,我插入24 25 后又删除了,那么再插入数据他的ID就是26而不再是24了,如果使用Max然后再加一,得到的结果将是24而不会 26 由于插入的数据而要用到当前的ID,所以以不能先插入再查询…… 哎,难呢……
如果新建一个虚拟表,然后插入一条数据,之后Max?
如果新建一个虚拟表,然后插入一条数据,之后Max?
解决方案 »
- 怎么用编程的方式访问Content 控件?
- 关于抓取数据的方法应该选择哪种?请大家帮忙指点一下
- 大虾,跪求在ASP.Net中用ODBC连接excel的问题
- TreeView 分层加载 三级大数据
- 关于WEB程序部署的一个迷茫问题
- 请问Cookies中同一变量如何存储多个值,前面存储的值不会被后者值覆盖?
- 如何实现:打开WEBFORM时,光标定在一个文本框内
- 用XSL脚本可以把XML里面存储的图像显示出来吗?
- OWC10(office xp)开发的WEB如何在OWC9(office 2000)?
- asp.net写的网站如何封装成可执行文件,在其他系统使用
- DataGrid Checkbox做一个删除多个项?
- 我是刚学.net,有这样一段代码是关于收藏的,不懂是什么意思,想请教大家。谢谢
select top 1 id+1 from [table] order by id desc
先插入一条记录(什么都行),然后Select @@identity,再把这条记录给UPDATE成你想插入的记录就行了.
@ID int output
as
insert into xx(x1,x20 values(x1,x2)
set @ID=@@identity
access中用
Rs.Open "select * from xx where ID is null",conn,1,3
rs.addnew()
Rs("x1")=x1
Rs("x2")=x2
Rs.update
ID=Rs("ID")
例如表table
字段:id,tableid,tablename,tableischangle//判断是否修改。
每次写入数据的时候,都从该表中读取对应的ID值,然后检查tableischangle的值。就可以了
(@getid int OUTPUT,
@name varchar(20),
@info varchar(100)
)asinsert into Table1(xName, xInfo) Values(@name, @info)set @getid = SCOPE_IDENTITY()
每次用存储过程去获取SequenceID时,在rowlock可以解决并发和返回自增长的ID问题
---------以下是我存储过程的一部分-----declare @CustomerID nvarchar(20),@temp int
set @temp = (select count(*) from customers)
if(@temp=0)
set @CustomerID=convert(nvarchar(20),getdate(),112) + '0000001' --格式例如 200604010000001
else
set @CustomerID=convert(nvarchar(20),getdate(),112) + substring((select CAST(CAST(max([CustomerID]) as bigint)+1 as nvarchar(20))from customers),9,7)
---------------------------------------------====
~~~~ 我的Blog:http://blog.csdn.net/quou2002
就可以了
ID应该在服务器端,线程安全的情况下产生,然后返回给应用程序端