我要达到以下目的,麻烦各位达人帮忙设计一个方案:1.对一张表有一个先查询后更新(update)部分记录的事务,该事务可能被并行调用,但是要求该事务是互斥的,即一旦外部有一个进程调用该事务,则紧接着另一进程调用该事务时,必须等待前面进程调用的该事务执行完毕后才能继续。
2.有另外的进程会在上述事务运行时查询或插入数据,该操作不必与上述事务操作互斥
3.第1个问题中提及的事务操作需要返回一个记录集,也就是说期望它返回一组记录。因为该数据库会被不同的程序在不同的机器上调用,所以,上述工作期望在数据库中而不是应用程序中实现。在尝试过程中,碰到了以下问题
1.使用函数时,提示事务和Update错误
2.使用存储过程,不知道如何令它返回一个记录集
3.不知道如何实现上面第1个问题中提到的互斥。
2.有另外的进程会在上述事务运行时查询或插入数据,该操作不必与上述事务操作互斥
3.第1个问题中提及的事务操作需要返回一个记录集,也就是说期望它返回一组记录。因为该数据库会被不同的程序在不同的机器上调用,所以,上述工作期望在数据库中而不是应用程序中实现。在尝试过程中,碰到了以下问题
1.使用函数时,提示事务和Update错误
2.使用存储过程,不知道如何令它返回一个记录集
3.不知道如何实现上面第1个问题中提到的互斥。
1 如何锁一个表的某一行A 连接中执行SET TRANSACTION ISOLATION LEVEL REPEATABLE READbegin transelect * from tablename with (rowlock) where id=3waitfor delay '00:00:05'commit tranB连接中如果执行update tablename set colname='10' where id=3 --则要等待5秒update tablename set colname='10' where id<>3 --可立即执行2 锁定数据库的一个表SELECT * FROM table WITH (HOLDLOCK)
注意: 锁定数据库的一个表的区别SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
1.对一张表有一个先查询后更新(update)部分记录的事务,该事务可能被并行调用,但是要求该事务是互斥的,即一旦外部有一个进程调用该事务,则紧接着另一进程调用该事务时,必须等待前面进程调用的该事务执行完毕后才能继续。=======
第一点,要实现资源独享,当你update时做需要锁表处理。2.有另外的进程会在上述事务运行时查询或插入数据,该操作不必与上述事务操作互斥
=====
查询肯定肯定没问题,锁定过程中insert能不能操作呢?....3.第1个问题中提及的事务操作需要返回一个记录集,也就是说期望它返回一组记录。
======
返回结果集应该没问题的,可以用临时表来处理。
1、执行某个update或者insert要独享的时候,要锁表。