Weil nicht der Trigger das Recht benötigt, sondern der User.
Letztlich wird der Trigger ja durch den User ausgeführt (wenn auch indirekt). Das
DBMS prüft aber immer gegen die Berechtigungen des Users.
Dabei spielt die Art und Weise des Aufrufs keine Rolle.
Das er die SP nicht direkt aufrufen dürfen soll, ist eigentliche Sache des Programms, nicht des
DBMS. Wenn ich dem User im Programm gar nicht erst die Möglichkeit gebe, direkt eine SP aus zu führen, ist das Problem gelöst
Der "User" ist niemand, der sich am Programm anmeldet oder so. Das Programm hat eine eigene Nutzerverwaltung, die mit den Datenbankusern nichts zu tun hat.
Der "User" ist ein Programm, welches von "außen" auf die Datenbank zugreift. Deswegen hat der auch so wenig Rechte wie möglich.