PostgreSQL-DB-Benutzer dürfen nur Funktionen aufrufen

Derzeit verwende ich PostgreSQL für meine Anwendung. Da ich versuche, jede SQL-Anweisung, die eine Transaktion enthält (d. H. Einfügen, Aktualisieren, Löschen), in eine Funktion einzufügen, bin ich auf folgendes Problem gestoßen:

Ist es möglich, dass ein Datenbankbenutzer nur Funktionen und Select-Anweisungen aufrufen darf, während er keine SQL-Anweisungen aufrufen kann, die eine Transaktion enthalten? Mit "Aufruffunktionen" meine ich jede Funktion. Egal ob es eine Transaktion enthält oder nicht.

Ich habe bereits versucht, einen Benutzer anzulegen, der nur Funktionen und Select-Statements aufrufen kann. Aber ich ende immer mit einem Fehler, wenn ich Funktionen aufrufe, die Transaktionen enthalten. Soweit ich weiß, benötigt ein Datenbankbenutzer Schreibrechte, wenn er eine Funktion aufruft, die eine Anweisung zum Einfügen, Aktualisieren oder Löschen verwendet.

Vermisse ich etwas? Ist dieses Szenario wirklich nicht möglich? In Bezug auf die Sicherheit wäre dies wirklich großartig, da Sie die SQL-Injektion so gut wie gar nicht erst verhindern.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage