Это несколько месяцев с опозданием, но я решил сделать это быстро, прежде чем сдать общее задание. Тем временем я переключился на postgres, так как он, казалось, предлагал больше функциональности (хотя и не так удобен для пользователя). Сначала я должен был создать функцию триггера:
CREATE OR REPLACE FUNCTION updateseatavailable()
RETURNS trigger AS
$BODY$
BEGIN
IF (TG_OP = 'INSERT') THEN
UPDATE "SeatAvailability"
SET "Available"='FALSE' AND "BookingID"=NEW."BookingID" WHERE "SeatAvailabilityID"=NEW."SeatID";
ELSIF (TG_OP = 'DELETE') THEN
UPDATE "SeatAvailability"
SET "Available"='TRUE' WHERE "SeatAvailabilityID"=OLD."SeatID";
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
, а затем просто вызовите функцию / процедуру из триггера:
CREATE TRIGGER UpdateSeatAvailable
AFTER INSERT OR DELETE ON "Bookings"
FOR EACH ROW
EXECUTE PROCEDURE updateSeatAvailable();
Мне не удалось получить BookingID в SeatAvailability для обновления по какой-то причине (при вставке ничего не произошло, а при удалении я получил сообщение о том, что Available не может быть нулевым, даже если я менял BookingID), поэтому я пропустил это в postgres, и вместо этого реализовал его с помощью Java. Это не лучший способ, но все же лучше, чем ничего.
Я решил опубликовать свое решение на тот случай, если у кого-то возникнет похожая проблема, и он наткнется на этот вопрос.