注册 登录
编程论坛 SQL Server论坛

插入一条记录,然后怎么查出ID-->千里冰封转移

喃瑟 发布于 2007-03-22 10:04, 1462 次点击
ID是递增的,插入一条记录,然后再查最后的一条记录这种方法select max(id) from tablename 可以实现,但这种方式有一个问题就是当有两个人以上同时向数据库里插入记录时就有问题了,你提出的id很可能不是你刚才插入的那条记录的id.这种情况常发生在访问量较大的网站数据库里.所在想找一种能够解决这种问题的方法.

还有这些方法SELECT
IDENT_CURRENT('tablename')
SELECT @@IDENTITY
SELECT SCOPE_IDENTITY()
但是不知道能否解决上述问题
不知哪位大侠可告知.

[此贴子已经被作者于2007-3-22 10:19:29编辑过]

14 回复
#2
angeloc2007-03-22 10:55

建议一切跟排序有关的数据表,都要加入时间列,省得后悔!

#3
棉花糖ONE2007-03-22 10:57
SELECT @@IDENTITY
这个只能实现自增字段的
#4
喃瑟2007-03-22 11:02
以下是引用angeloc在2007-3-22 10:55:35的发言:

建议一切跟排序有关的数据表,都要加入时间列,省得后悔!

加了啊

#5
棉花糖ONE2007-03-22 11:04

sqlserver中有种叫timestamp,你去看看帮助,应该对你有用

#6
angeloc2007-03-22 11:16

不好意思,我理解错了,我还以为你要查最后一个插入ID!
不过你能告诉我你想做什么么?为什么要查最后一个ID呢?

#7
Kendy1234562007-03-22 11:25
不管你用什么方法都存在这个问题。。。
当你取出最后一条记录后 它可能马上就不是最后一条了
这和数据库本身 和开发平台都无关的
就像水区 你灌完水 你刷新 就在你刷新的时候 别人也灌了一篇在你前面。

这个问题其实并不重要 重要的是 你要记住你操作的是哪条记录 别拿出最后一条记录 修改后存回到倒数第2条就成了
#8
angeloc2007-03-22 12:36
我觉得是他的思路不适当,看他想做什么了!
#9
bygg2007-03-22 12:45
那就加锁吧..不过影响访问...
#10
喃瑟2007-03-22 12:57
以下是引用angeloc在2007-3-22 11:16:44的发言:

不好意思,我理解错了,我还以为你要查最后一个插入ID!
不过你能告诉我你想做什么么?为什么要查最后一个ID呢?


我没说要查最后一条,我想要是插入一条数据然后获得这条数据的ID,然后同时用这个ID做另外一个表的一列,这样就将两个表关联起来了...
#11
angeloc2007-03-22 13:40

用存储过程吧!
好的数据库不用自增的!

#12
Kendy1234562007-03-22 15:38
不要用自增 用uniqueidenftifier类型
先newid 拿到值 再往2个表里插数据。

你先插入数据表 再取max(id) 这种方法确实是有问题的
#13
棉花糖ONE2007-03-22 17:11
用uniqueidenftifier类型感觉有点大材小用
#14
angeloc2007-03-22 17:31
最好还是通过自定义算法实现!
#15
ll19802007-03-26 15:47

加锁可以做到的。建议不要使用这样的字段。

1