Jump to content
Melde dich an, um diesem Inhalt zu folgen  

Oracle SQL Rechte bei Trigger

Empfohlene Beiträge

Hallo zusammen,

Ich habe einen Trigger geschrieben, der ein Attribut in einer Klasse ändert, wenn sich ein anderes Feld der gleichen Tabelle ändert. Das klappt soweit problemlos.

Das Problem ist, wenn der in der Oracle-DB angemeldete Benutzer kein Lesen-Recht auf das Attribut hat, dass der Trigger ändern soll, dann wird der Trigger nicht erfolgreich ausgeführt.

Wenn ich das gleiche mit einem DB-User ausführe, der das Feld sieht und(!) Änderungsrecht hat, dass läuft der Trigger wie er soll.

Das Problem ist natürlich, dass der Benutzer, das vom Trigger geänderte Feld nicht sehen soll/darf.

Beispiel: Ich habe Feld A, auf das User A alle Rechte hat. Auf Feld B hat User B alle Rechte. Wenn User A, Feld A ändert, versuche ich derzeit mit einem Trigger Feld B zu ändern. Dies scheitert aber an den Rechten, weil der Trigger mit den Rechten von User A läuft, der auf Feld B keine Rechte hat.

Hat hierzu jemand eine Idee? Kann man den Trigger mit anderen Rechten laufen lassen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich weiß ja, das der Benutzer kein Schreibrecht auf das Feld hat. Der Nutzer A soll das Feld B ja nicht sehen (und darf dann leider auch nicht schreiben).

Mein Problem ist ja, dass der Trigger ebenfalls mit dem gleichen Benutzer ausgeführt wird, der die Änderung des Feldes macht. Wenn ich dies ändern/umgehen könnte, wäre mir schon geholfen ;-)

bearbeitet von Feuer_und_Flamme

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mein Vorschlag war, du legst einen Benutzer C an, der die Rechte für sowohl Feld A als auch Feld B hat und dieser legt dann den Trigger an. Da der Trigger mit den Rechten des Owners läuft, sollte es gehen.

Alternativ könntest du auch innerhalb des Triggers eine Stored Procedure aufrufen, die das regelt. Das erscheint mir aber eher noch umständlicher.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 37 Minuten schrieb lessbess:

Mein Vorschlag war, du legst einen Benutzer C an, der die Rechte für sowohl Feld A als auch Feld B hat und dieser legt dann den Trigger an. Da der Trigger mit den Rechten des Owners läuft, sollte es gehen.

Das scheint ja leider nicht der Fall zu sein. Der Owner des Triggers ist genau ein solcher User. Wenn ich mit diesem User das Feld A ändere, funktioniert alles wie gewünscht. Wenn aber User A Feld A ändert, wird Feld B durch den Trigger nicht geändert. Dies kann nur bedeuten, dass der Trigger nicht mit dem Benutzer der Owner des Triggers ist, ausgeführt wird, sondern mit dem User, das das Feld ändert, auf dem der Trigger gesetzt ist. Sonst bestände für mich genau dieses Problem nicht (ich bin bislang auch davon ausgegangen, dass der Owner den Trigger ausführt, aber das scheint nicht der Fall zu sein)

bearbeitet von Feuer_und_Flamme

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.