If the view definition is too complex to be automatic updateable, then how postgresql defines OLD in INSTEAD OF trigger? It cannot bind any column on any table directly then, right?
Unless postgresql refresh view as table source before executing trigger? Then it may filter (WHERE sub-clause of UPDATE/DELETE) the rows to be update, and use those rows as OLD?