Suggestion / Proposed Improvement PostgreSQL should validate column references at trigger creation time, not just at runtime. If a column does not exist in the target table (Orders in this example), trigger creation should fail immediately with a clear error message.
This behaviour is by design in PostgreSQL. The CreateTrigger() is responsible for creating a dependency between trigger and its underlying pl/pgsql function. The pl/pgsql function is only parsed when it is executed for the first time.
This approach allows for flexibility, such as adding columns to a table after a trigger has been created. On the other hand, if a column existing at the time of trigger creation is later removed, validating at creation time would not offer much advantage in these situations.