次の表があります。
フライト(id_flight)
空港(id_airport)
Departures_Arrivals(id_flight、id_airport)。フライトと空港の間のジャンクションテーブルであり、次の属性があります。
gate
日付
タイプ。0または1のいずれかです。0は出発を表し、1は到着を表します。
到着日が出発日よりも大きいことを確認するための制約はありますか?
BEFORE INSERT TRIGGERを作成します。これは、そのフライトと空港の行を挿入する場合に条件が満たされているかどうかをチェックします。
これは例です。条件が満たされていない場合は、条件とエラーメッセージを確認する必要があります。
DELIMITER $$
CREATE TRIGGER before_Departures_Arrivals_insert
BEFORE INSERT
ON Departures_Arrivals FOR EACH ROW
BEGIN
DECLARE _date DATETIME;
DECLARE _tyoe INTEGER;
IF NEW.tyoe = 1 THEN
SET _type = 0;
ELSE
SET _type = 1;
END IF;
SELECT `date`
INTO _date
FROM Departures_Arrivals
WHERE id_flight = NEW.id_flight AND id_airport = NEW.id_airport
AND type = _type
ORDER BY `date` DESC
LIMIT 1;
IF NEW.`date` > _date THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = "The new date is before the arrival";
END IF;
END $$
DELIMITER ;