Scripts 学盟

标题: @@IDENTITY 怎么防止并发? [打印本页]

作者: 嘟嘟    时间: 2011-7-16 10:40:03     标题: @@IDENTITY 怎么防止并发?

@@IDENTITY   返回最后一个标识值 但是 有多个人操作一张表 怎么防止并发?高手赐教有没有别的防止并发的全局变量?
作者: 那个谁    时间: 2011-7-16 11:09:17

小量并发可以用存取过程处理。
作者: 嘟嘟    时间: 2011-7-16 12:03:08

那个谁 发表于 2011-7-16 11:09
小量并发可以用存取过程处理。

可不可以把这张表锁上  然后 解锁?
假如 我向 A 表插入一条数据    另一个人向B表插入一条数据  那返回的是  哪个表的?
作者: 嘟嘟    时间: 2011-7-16 12:09:10

嘟嘟 发表于 2011-7-16 12:03
可不可以把这张表锁上  然后 解锁?
假如 我向 A 表插入一条数据    另一个人向B表插入一条数据  那返回 ...

sql server 2000中,有三个比较类似的功能:他们分别是:scope_identity、ident_current 和 @@identity,它们都返回插入到 identity 列中的值。

ident_current 返回为任何会话和任何作用域中的特定表最后生成的标识值。ident_current 不受作用域和会话的限制,而受限于指定的表。ident_current 返回为任何会话和作用域中的特定表所生成的值。
@@identity 返回为当前会话的所有作用域中的任何表最后生成的标识值。
scope_identity 返回为当前会话和当前作用域中的任何表最后生成的标识值

scope_identity 和 @@identity 返回在当前会话中的任何表内所生成的最后一个标识值。但是,scope_identity 只返回插入到当前作用域中的值;@@identity 不受限于特定的作用域。


作者: 混混@普宁.中国    时间: 2011-7-16 13:12:14

在ado编程中。。。。

@@IDENTITY 是被 Connection 对象维护。。。, 只要你的 Connection对象不被多个线程同时使用。。就可以了
作者: Yisin    时间: 2011-7-18 07:50:34

以前不知道 现在知道咯
作者: 嘟嘟    时间: 2011-7-18 08:26:11

混混@普宁.中国 发表于 2011-7-16 13:12
在ado编程中。。。。

@@IDENTITY 是被 Connection 对象维护。。。, 只要你的 Connection对象不被多个线 ...

可是 我数据库 有触发器 怎么办?
作者: 那个谁    时间: 2011-7-18 08:50:34

那就加锁了。每次只执行一个。
作者: 混混@普宁.中国    时间: 2011-7-18 09:00:20

SELECT SCOPE_IDENTITY()
作者: 奔波儿灞    时间: 2011-7-22 09:08:40

我菜鸟也说一句  之前我也有碰到类似这个问题  我是这样的  例如  第一个人插入值的时候顺便插入一个随机数   后面的插入就可以通过这个随机数取标识值    两个人同时插入的时候取的随机数不一样 就解决了  
作者: 奔波儿灞    时间: 2011-7-22 09:09:22

不用锁表  也不用存储过程




欢迎光临 Scripts 学盟 (http://www.iscripts.org/) Powered by Discuz! X2