使用触发器吧,只要有人更新你的表,无论是谁,都可以取得最新的最大值!不过这需要你另外建立一张表Max_ID_Table,该表只有一个字段,就是新插入你的表的最大的ID值。CREATE TRIGGER [My_Trigger_Name] ON [dbo].[Your_Table_Name] FOR INSERT AS declare @max_id int select @max_id=max(ID) from inserted update Max_ID_Table set max_id=@max_id然后从表:Max_ID_Table中取出来的就是最新的最大值了。
我的意思是:当你添加一条记录并存储的同时,又有人添加一条,想把这个实时变化的值取出,这个值很重要,关系到物资动态的结存
注意条件应该这样理解:多人同时添加记录,取得自己修改的最后一条记录的ID。
对吗?haitao5676(笑纹)
那条流水号
只要有人连就:
Update Counter Set Column1 = Column1 + 1
临时表:userid,maxid
加个记录修改自己的最大值,max(maxid)为最大。
同时在一个数据库上打开3个连接(我打开了3个query analyzer),分别执行1条插入语句和
select @@identity, 3个连接上分别返回的数字可能是 n, n+1, n+2
再回头到第一个连接上执行select * from table,能够发现其他连接插入的数据,再运行 select @@identity,发现返回的数字并没有因为用其余连接插入数据而改变仍然是 n, 可见 select @@identity是正确的。
FOR INSERT
AS
declare @max_id int
select @max_id=max(ID) from inserted
update Max_ID_Table
set max_id=@max_id然后从表:Max_ID_Table中取出来的就是最新的最大值了。
不管怎样,只要用max()就不会取出这个值了,大家这么踊跃实在叫我感动。谢谢各位,不过还得麻烦各位,在个一点提示
select count(XXX) as tt from XXX
在实际工作中,假定以一篇文章为例,我一般是将文章基本信息(标题、作者等)、正文、点击次数存放在三张表中,index、value、click,文章入库以后经过审核输出为页面。问题就在这儿了,在insert index()后,我势必要取得ID号,然后再向value/click插入数据。但是这个ID号如何取呢?(我们一般是好些人同时录库)方法一、在录入index表时,文章标题用session.sessionID代替,然后select得到ID,再update index。方法二、在index/value/click三表中不以ID为相关字段,而是另设一varchar字段,假定为filename。在录入操作时,取session.sessionid &datediff('s','2000-01-01')值为filename值,然后insert。
BTW:由于实际的问题,我们的一些应用并不是采用sqlserver,象mysql/oracle/sybase都会用到,因此用select @@Identity的办法并不是很适合。