Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?
  • Autor

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

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.

  • Autor
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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.