使用其他表中的列添加CHECK约束

时间:2019-12-11 07:24:10

标签: postgresql constraints check-constraints

我有两个表:

  

时间表:

     
      
  • id INT
  •   
  • daily_schedule_id INT
  •   
  • 开始 TIMESTAMP
  •   
  • 完成 TIMESTAMP
  •   
     
     

每日时间表:

     
      
  • id INT
  •   
  • 日期日期
  •   

我想向schedules.startschedules.finish添加约束,以检查daily_schedules.date的值。有一个简单的方法可以做到这一点吗?

遵循以下原则:

ALTER TABLE schedules 
   ADD CONSTRAINT schedules_date_range_check CHECK (start = daily_schedules.date AND finish = daily_schedules.date)

1 个答案:

答案 0 :(得分:1)

虽然从技术上讲有多种方法可以实现,但不支持它,这是一个坏主意,因为它可能导致无法恢复转储。

避免数据库中的冗余始终是一个好主意,因此我建议将startfinish存储在schedules中,其数据类型为time,即相对于相关date的{​​{1}}的理解。

只需添加daily_schedulestime,瞧,您得到了date