Java 是否可以限制oracle数据库中的并发插入
我必须限制oracle数据库中的并发插入 是否可以不进行手动检查 或者oracle数据库中是否存在限制同一用户进行第二次事务的内容 或者jdbc中有什么东西吗Java 是否可以限制oracle数据库中的并发插入,java,database,oracle,Java,Database,Oracle,我必须限制oracle数据库中的并发插入 是否可以不进行手动检查 或者oracle数据库中是否存在限制同一用户进行第二次事务的内容 或者jdbc中有什么东西吗 谢谢。您应该使用物化视图来定义这样的约束 第一种方法: create table froc3(id number, userid number, starttime date, endtime date,
谢谢。您应该使用物化视图来定义这样的约束 第一种方法:
create table froc3(id number,
userid number,
starttime date,
endtime date,
constraint froc3_id unique(id));
create materialized view froc3_mv refresh on commit as
select f1.id as id, f2.id as id_conflict
from froc3 f2, froc3 f1
where f2.userid = f1.userid
and f2.id <> f1.id
and (f2.starttime between f1.starttime and f1.endtime or
f2.endtime between f1.starttime and f1.endtime);
alter table froc3_mv add constraint check_interval check(id =
id_conflict) deferrable;
创建表froc3(id号,
用户识别号,
开始日期,
结束时间日期,
约束froc3_id unique(id));
在提交时创建物化视图froc3\u mv refresh as
选择f1.id作为id,f2.id作为id\u冲突
来自froc3 f2,froc3 f1
其中f2.userid=f1.userid
和f2.id f1.id
和(f2.starttime介于f1.starttime和f1.endtime之间或
f2.f1.starttime和f1.endtime之间的结束时间);
更改表froc3\u mv添加约束检查\u间隔检查(id=
id_冲突)可延期;
你说的“限制”是什么意思?第二个事务应该做什么-阻止直到提交第一个事务或失败并显示错误消息?第二个事务必须失败。当前事务成功和数据都插入到表中。您可以控制SQL语句吗?意味着,a是否会选择更新NOWAIT
帮助?选择更新NOWAIT在更新的情况下肯定会起作用。但我的情况是插入记录。您试图解决的业务问题是什么?为什么要阻止“同一用户”执行并发插入,而不是阻止不同用户执行相同的并发插入?并发插入会产生什么问题?您确定不只是需要唯一的约束吗?