Sql数据库操作的问题
发布网友
发布时间:2022-04-09 16:52
我来回答
共4个回答
热心网友
时间:2022-04-09 18:21
用户一预订了A车的第20个座位(总共只有20个座位),但几乎同时,用户二也预定了A车的座位,
方法很多:1如果说预定座位在你的db操作中是一个insert操作的话
其实只要控制好表中的联合唯一健就可以了比如说车号+座位号这个应该是唯一的吧,也就是说在你这个表中这2个字断是联合唯一的,建立联合唯一健的方法在sql的managerment studio中建立表的index的地方把几个字段都添加近来,然后设置成unique就可以了,这样的话当你insert的时候同一个车号+座位号的数据插入时,自动就会报错。可以不用事务
如果你建立的表没有那么多*的话就必须要用事务了,方法如xhbgq 所说
热心网友
时间:2022-04-09 19:39
用数据库事务控制
private IDataAccess _da; // 数据库访问接口
private IDbTransaction _tran; // 数据库事务控制
this._tran = this._da.BeginTransaction();
这里执行预订操作
this._tran.Rollback();
请问,是不是采用事务之后,就可以防止两个用户同时预订座位的冲突?
==========>
是的,预订座位的时候在数据库中插入记录的顺序总是有先后的,启用数据库事务以后,数据库插入这条数据时就会锁定,如果插入失败数据就会回滚,插入失败则预订没有成功。
热心网友
时间:2022-04-09 21:14
1、简单的方法是对表加锁(古老的方法)。
2、自动排号,申请时就预置为占用。
3、记录级加锁。
自动排号较好。
热心网友
时间:2022-04-09 23:05
c#中带有事务处理,可以查阅相关资料。