看书偶然看到这一现象,针对房间预定时,如果表中start_date到end_date,查询不到数据,则表示房间可以预定,针对这个业务场景创建表和函数
create table schedules_test(
start_time date,
end_time date
)
我在两个窗口下执行下列操作,发现全都插入成功了
DECLARE
l_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO l_count
FROM schedules_test
WHERE start_time < to_date('2020-10-02', 'yyyy-mm-dd')
AND end_time > to_date('2020-10-01', 'yyyy-mm-dd');
dbms_lock.sleep(5); --模拟多人同时申请
IF l_count = 0 THEN
INSERT INTO schedules_test
VALUES
(to_date('2020-10-01', 'yyyy-mm-dd'),
to_date('2020-10-02', 'yyyy-mm-dd')
);
COMMIT;
dbms_output.put_line('SUCCESS');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;