我必须在oracle数据库中限制并发插入。
没有手动检查是否可行 或者oracle数据库中有什么限制同一用户的第二个事务 或者jdbc中有什么内容吗?
感谢。
答案 0 :(得分:0)
您应该使用物化视图来定义这样的约束。
第一种方法:
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;