Java 是否可以限制oracle数据库中的并发插入

Java 是否可以限制oracle数据库中的并发插入,java,database,oracle,Java,Database,Oracle,我必须限制oracle数据库中的并发插入 是否可以不进行手动检查 或者oracle数据库中是否存在限制同一用户进行第二次事务的内容 或者jdbc中有什么东西吗 谢谢。您应该使用物化视图来定义这样的约束 第一种方法: create table froc3(id number, userid number, starttime date, endtime date,

我必须限制oracle数据库中的并发插入

是否可以不进行手动检查 或者oracle数据库中是否存在限制同一用户进行第二次事务的内容 或者jdbc中有什么东西吗


谢谢。

您应该使用物化视图来定义这样的约束

第一种方法:

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在更新的情况下肯定会起作用。但我的情况是插入记录。您试图解决的业务问题是什么?为什么要阻止“同一用户”执行并发插入,而不是阻止不同用户执行相同的并发插入?并发插入会产生什么问题?您确定不只是需要唯一的约束吗?