開始日と終了日のテーブルがあります。開始日と終了日の間に定義された期間のいずれにも新しい日付が重ならないようにしたいと思います。何か案は ?
1086 次
2 に答える
1
挿入する前に、その新しい日付の既存の行を確認できます。
SELECT COUNT(*) FROM THE_TABLE
WHERE (
? BETWEEN START_DATE AND END_DATE
OR
? BETWEEN START_DATE AND END_DATE
OR
START_DATE BETWEEN ? AND ?
) AND ROWNUM<2
(? は、テストする新しい期間の開始日と終了日です)。
競合状態を回避するために、おそらくこれを同期する必要があります (たとえば、LOCK TABLE と)。
于 2012-08-03T08:33:27.897 に答える
0
Thiloが言ったことに加えて、次のことも処理する必要があります
SELECT COUNT(*) FROM THE_TABLE
WHERE (
DATE_1 BETWEEN START_DATE AND END_DATE
OR
DATE_2 BETWEEN START_DATE AND END_DATE
OR
START_DATE BETWEEN DATE_1 AND DATE_2
OR
END_DATE BETWEEN DATE_1 AND DATE_2
)
AND ROWNUM<2
于 2012-08-03T08:48:35.877 に答える