这个简单的事务该怎样写
执行一个出仓的操作该如何写?
平时我是这么写的,首先看看剩余数量
select shengyu into temp from table1 where mid=xxx;
如果大于指定数量那么执行出仓
if temp >= 100 then
update table1 set shengyu=shengyu-100 where mid=xxx;
commit;
end if;
但是如果这些语句并发执行的话,应该是有可能出错的,当剩余100时,两个事务同时去select,那么temp都大于等于100,于是都减去100,那剩余就小于0了,与事实不符。我的想法是,当我select时就应该将记录锁住,不让其他的事务去读该记录,只有当该事务完毕之后才释放锁。
但不知道怎么写啊,请各位指教。