并发存储
发布时间: 2022-12-15 21:48:42
A. Oracle存储过程并发问题
1.设立主键。根据唯一性数据库自动判别。
2.笨的方法:建议采用信号量。
举例如下:
create signal_flag (signal number(1));insert into signal_flag values(1);
在每次查询表有无记录前,加入语句
select signal from signal_flag where signal=1 for update;
select count(1) int var_cnt from tab1 ;
if var_cnt =0 then insert.....
endif;
commit;
B. 存储过程如何实现存储过程的并发执行
这个问题一般是数据锁造成的,INSERT的时候一般不会遇到这种问题,你在A或者B存储过程中查看一下,一定有UPDATE语句或者 SELECT FOR UPDATE语句,两个并发的请求同时锁一条记录就会造成一条成功另一条失败。
不过按照你的描述最大的可能性是另外一种情况,就是两次INSERT插入的数据某个字段是相同的值,好死不死的,这个相同值的字段又设置了唯一索引或者约束,那么当第一条记录插入成功后第二条记录就会必然失败回滚。
C. 存储过程并发,存储过程在同一个时间里面执行了多次,导致数据多次修改
这个问题显然不应该去数据库查,你最先应该看前端是否有重复提交的限制,或者直接在后台加安全锁。
热点内容
