create function UpdateLastMaintenance()
returns trigger as $$
declare
    LastMaintenanceDate timestamp;
begin
    select m.date into LastMaintenanceDate
    from maintenance m
    join airplane a on a.lastmaintenanceid = m.id
    where a.id = new.airplaneid;

    if LastMaintenanceDate is null or LastMaintenanceDate <= new.date then
        update airplane
        set lastmaintenanceid = new.id
        where id = new.airplaneid;
    end if;

    return new;
end;
$$ language plpgsql;

create trigger UpdateLastMaintenance
after insert on maintenance
for each row execute function UpdateLastMaintenance();