楼主: ddllyy

@@IDENTITY 与并发性问题

[复制链接]
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
11#
发表于 2004-1-18 09:56 | 只看该作者
最初由 ccwlm741212 发布
[B]

1、@@IDENTITY就是当前的值
2、事物是你控制的啊,你要等一个事物完成了才去做另外一个事物 [/B]


我知道、@@IDENTITY是当前值,可是在并发的时候,如果大家都执行insert into语句。那我如何找回我那条?我那条可能已经不是最后的了。
而且这种事务不可能说等我INSERT INTO完,取得IDENTITY的值后别人才可以执行其它的insert into

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
12#
发表于 2004-1-18 10:24 | 只看该作者
最初由 winy_huang 发布
[B]

我知道、@@IDENTITY是当前值,可是在并发的时候,如果大家都执行insert into语句。那我如何找回我那条?我那条可能已经不是最后的了。
而且这种事务不可能说等我INSERT INTO完,取得IDENTITY的值后别人才可以执行其它的insert into [/B]


当一个人进行插入操作的时候,你可以先使用事物锁住表啊,成功后打开锁啊,这样一个一个排对不就可以了吗?

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
13#
发表于 2004-1-18 10:30 | 只看该作者
是可以这样。
不过这样对性能方面会不会有大的影响?不是很懂的说。
另外,如何在insert或select 的时候锁表。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
14#
发表于 2004-1-18 10:34 | 只看该作者
最初由 winy_huang 发布
[B]是可以这样。
不过这样对性能方面会不会有大的影响?不是很懂的说。
另外,如何在insert或select 的时候锁表。 [/B]


所以事物的理解和运用是数据库的一个难点和重点

咱的处理一般是使用人工控制:在我的软件里控制,别让系统去控制

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2004-1-18 11:08 | 只看该作者
举个例子,
连接1
INSERT ..........
SELECT @@Identity  ---> 10
连接2
INSERT ..........
SELECT @@Identity  ---> 11
连接1
SELECT @@Identity  ---> 12
INSERT ..........
SELECT @@Identity  ---> 13 [/B][/QUOTE]


上面的那个例子,好像有问题我觉得因该是

举个例子,
连接1
INSERT ..........
SELECT @@Identity  ---> 10
连接2
INSERT ..........
SELECT @@Identity  ---> 11
连接1
SELECT @@Identity  ---> 10
INSERT ..........
SELECT @@Identity  ---> 12

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
16#
发表于 2004-1-18 11:15 | 只看该作者
每一步是否提交呢?

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
17#
发表于 2004-1-18 11:18 | 只看该作者
刚才试了一个,发现执行select @@identity from tb_seq_test会把表中所有的记录全列出来。
能不能只显示一行?因为其实每行都是一样的。
最好是有效率一点的,用MAX之类的东西会不会影响性能 ?

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
18#
发表于 2004-1-18 11:20 | 只看该作者
难道要加max()

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
19#
发表于 2004-1-18 11:23 | 只看该作者
加MAX()是可以的。不过感觉不是太好。
还有,说到连接这个东西。如果我是用三层的结构,那么这个连接指的是什么呢?
每个客户端算不算一个连接。还是说只有中间层连接数据库那个才算连接。

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2004-1-18 11:27 | 只看该作者
我也有相同的疑问,什莫叫“连接”。ado中的connectinon能否说是一个连接,如果是这样,就好解决了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表