【发布时间】:2019-03-01 03:48:38
【问题描述】:
我有一张桌子叫TimeTracks:
CREATE TABLE "TimeTracks" (
"id" uuid PRIMARY KEY,
"startTime" timestamp(3) NOT NULL,
"endTime" timestamp(3),
"taskId" uuid NOT NULL REFERENCES "Tasks"("id"),
UNIQUE ("taskId", "endTime")
);
在插入时间轨迹时,必须满足以下条件:
具有相同taskId 的时间轨迹的startTime 和endTime 之间的时间跨度可能不会重叠。
当使用原始 SQL 时,人们建议这样做:
insert into TimeTrack (id, startTime, endTime, taskId)
select
'some Id', 'some startTime', 'some endTime', 'some taskId'
where not exists (
select * from TimeTrack where
(('some startTime' between startTime and endTime)
or ('some endTime' between startTime and endTime))
and ('some taskId' == taskId)
);
我怎样才能在 JOOQ 中做同样的事情(或具有相同结果的事情)?
(我使用的是 PostgreSQL)
【问题讨论】:
-
我建议您为这种完整性检查添加一个触发器...
-
感谢您的提示 :) 我要试试。
标签: java sql postgresql jooq