Добавить ограничение CHECK со столбцом из другой таблицы - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть две таблицы:

расписания:

  • id INT
  • daily_schedule_id INT
  • start TIMESTAMP
  • финиш TIMESTAMP

daily_schedules:

  • id INT
  • дата ДАТА

Я хочу добавить ограничение к schedules.start и schedules.finish который проверяет значение daily_schedules.date. Есть ли простой способ добиться этого?

Что-то вроде этого:

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

1 Ответ

1 голос
/ 11 декабря 2019

Хотя есть способы сделать это технически, это не поддерживается, и это плохая идея, так как это может привести к дампам, которые невозможно восстановить.

Всегда полезно избегать избыточности в базах данных, поэтомуЯ рекомендую хранить start и finish в schedules с типом данных time, который понимается относительно date соответствующего daily_schedules.

Просто добавьте time и date, и вуаля, вы получили timestamp.

...