Zum Inhalt springen

Oracle SQL Rechte bei Trigger


Feuer_und_Flamme

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?
Link zu diesem Kommentar
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
Link zu diesem Kommentar
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.

Link zu diesem Kommentar
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
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...