首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一个事务并发回滚的有关问题

2012-11-09 
请教一个事务并发回滚的问题好奇怪的问题,因为某种原因表必须是自动编号。所以想了个办法,用事务控制并发SQ

请教一个事务并发回滚的问题
好奇怪的问题,因为某种原因表必须是自动编号。


所以想了个办法,用事务控制并发

SQL code
BEGIN TRANSACTIONinsert into aaselect bb from table--然后这里判断并发,这里的并发都是毫秒数都一样,所以判断同ip同时间的就是并发了select @CountNum =count(*) from aa where loginip=@ip and logintime=@now--大于2个就回滚if @countnum>=2begin    Rollback TRANSACTION    returnendCOMMIT TRANSACTION


但是这样出现了一个惊人的问题..当并发进来后,他把2个记录都回滚了..等于我的日志表也跟就没这记录我晕

想请教下达人,对于自动编号的表,怎么来进行并发控制呢?我想只进来一条记录就行.

以前碰到过的此类问题,均是把表设置成不自动编号,然后max(id)获取到最大的记录,然后id设置主关键字段不允许重复.这样insert into的时候会报个错误,然后加上事务可以完美的回滚.但是这里表不能动的情况下,怎么来解决呢


[解决办法]
sp_getapplock是对应用程序资源进行锁定的,访问取决于你的LockMode 。
如果是独占,第一个用户已经访问时已经锁定了资源,那么在资源被释放之前第二个用户是无法访问的。

热点排行