如何防止覆盖共享约会簿中的记录?

时间:2016-01-23 00:14:07

标签: database postgresql

PostgreSQL 9.3

我正在写一本标准的预约簿。该书每15:00分钟有三列,并有多个客户同时从不同的位置写入。

如果两个用户A和B同时进行预约,我该如何阻止用户B覆盖用户A的预约? (也就是说,一旦用户A拥有 在预约时,用户B的信息将会过时 - 在他试图保存约会记录之前,他不会知道用户A做了什么。如果已经分配了用户B想要使用的约会时间,我希望通知用户B它不可用并且不会覆盖用户A.

我确信这是一个基本而常见的问题,但我无法绕过它。

感谢您提供任何帮助,建议或参考。

1 个答案:

答案 0 :(得分:1)

如果您存储约会,例如

id,customer_id,时间
1,32,2016-03-10 10:15:00
...

只需在时间列上添加唯一索引即可。然后,如果您尝试同时插入行,则会出现错误。如果您希望同时允许超过1个预订,则可以添加time_slot列并将其包含在索引中。

id,customer_id,time,time_slot
1,32,2016-03-10 10:15:00,1 2,15,2016-03-10 10:15:00,2

create unique index appointments_time_timeslot_idx on appointments (time, time_slot);