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.
Ok, das macht die Sache schwieriger, ändert aber auch nix. Denn auch das Programm wird sich mit einem User am
DBMS anmelden, wenn es die Connection aufbaut.
Aus Sicht der
DB ist es egal, ob der "User" jetzt ein Mensch, ein Programm oder der Ionenfluss ist
So wie es aussieht, prüft die "LogSP" nicht nur die Berechtigung der Aufrufenden Instanz, sondern auch die Berechtigungen des Users.