【问题标题】:How can I make a constraint so that the appointment cannot be repeated?我怎样才能做出限制,使约会不能重复?
【发布时间】:2022-01-04 03:58:37
【问题描述】:

我想制定一个限制条件,以便与某个医生的预约不能重复多次。例如,如果某人选择了 2021 年 9 月 11 日 15:00 至 15:30 的预约,则不能在同一位医生处再次预约同一预约。 phpMyAdmin处女为:服务器版本:10.4.10-MariaDB

CREATE OR REPLACE TABLE appointments (
    AppId     int(11) PRIMARY,
    docID     int(11),
    patientID int(11),
    AppStart  datetime,
    AppEnd    datetime
  )

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    你可以这样做:

    alter table appointments
    add constraint unique_dr_app_start unique (docID, AppStart);
    

    例子:

    insert into appointments (AppId, docID, AppStart) 
    values (1, 123, '2021-11-25 12:30:00'); -- OK
    
    insert into appointments (AppId, docID, AppStart) 
    values (2, 123, '2021-11-25 10:30:00'); -- OK
    
    insert into appointments (AppId, docID, AppStart)
    values (3, 123, '2021-11-25 12:30:00'); -- error
    

    密钥“unique_dr_app_start”的重复条目“123-2021-11-25 12:30:00”

    编辑 -- 包括结束约会验证

    您可以另外设置约束:

    alter table appointments
    add constraint unique_dr_app_end unique (docID, AppEnd);
    

    您可以通过尝试看到它在工作中:

    insert into appointments (AppId, docID, AppStart) 
    values (4, 123, '2021-11-25 10:30:00'); -- error
    

    密钥“unique_dr_app_start”的重复条目“123-2021-11-25 10:30:00”

    【讨论】:

    • 约会必须有开始时间和结束时间,并且两者之间的时间必须是唯一的。谢谢
    • @oliver 按要求添加了额外的约束
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2022-08-19
    • 2022-01-12
    • 2014-01-03
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多