Mysql Добавить дни на дату из двух разных столбцов - PullRequest
0 голосов
/ 05 марта 2019

Привет, моя проблема связана с добавлением дней к дате из двух разных таблиц в MySql в среде Mamp.

Membership transaction Membership type Тип членства для транзакции членства от 1 до многих Ссылка type_id

Дата также в формате yyyy/mm/dd, так как это единственный формат, который Мамп разрешит из моего исследования.
Мне нужен новый столбец конечной даты, который ссылается на продолжительность столбца из таблицы типов членства. Я хочу добавить Duration_day к start_date, чтобы получить конечную дату, совпадающую с type_id. (Таким образом, они связываются, чтобы дать правильную дату окончания)
Я хочу, чтобы он вычислялся автоматически при сохранении даты начала и идентификатора типа

Любая помощь будет оценена Спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Вам потребуется триггер на INSERT / UPDATE - вычисляемый столбец (для MySQL v5.7.6 +) не будет работать в вашем случае (он может ссылаться только на столбцы в той же таблице). 2 триггера могут выглядеть следующим образом

CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE INSERT ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;

CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE UPDATE ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;
...