Ich habe in meiner DB für alle von "normalen" Benutzern nutzbaren Tabellen Views angelegt, die die Zugriffsrechte einschränken. Z.B. kann ein Benutzer von einer bestimmten Tabelle nur ausgewählte Zeilen sehen oder er kann zwar alles sehen aber nichts ändern. Auf die Tabellen kann nur der DB Owner direkt zugreifen.
Das Problem ist nun folgendes:
Wenn ein Benutzer aus einer Tabelle etwas löscht, so geschieht dies auch über einen View und funktioniert auch. In der Tablle ist allerdings ein OnDelete Trigger, der in einer weiteren Tabelle Einträge löscht. UND DAS FUNKTIONIERT NICHT. Aus irgend einem Grund werden die Permissions nicht an den Trigger weiter gereicht und das Delete in der Triggerfunktion scheitert mit permission denied.
Kann man das irgenwie ändern oder war es keine gute Entscheidung, die Zugriffsrechte mit einer eigenen User Tabelle und über Views zu machen?
Geändert von vejazi (21.04.2009 um 14:50 Uhr)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Bei einer Funktion? Der, der sie definiert, ist auch der owner, ausgeführt wird sie aber im Context des Benutzers, der sie ausführt. es sei denn, man setzt SECURITY DEFINER. Dann hat sie die Rechte des Definers. So erstellte Funktionen verhelfen also dem nutzenden User zu mehr bzw. anderen Rechten, dies sollte man beachten.
Änderst Du den Owner einer Function und diese ist security definer, dann schlägt das natürlich durch.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
@akretschmer: Danke, das hat mir den Tag gerettet!
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen