Hallo,
ich brauche eine Möglichkeit, um wilde und schädliche SQL-Requests abzufangen. bevor sie Schaden anrichten können.
Meine Idee: Ein Trigger, der bei jedem Update auf eine bestimmte Tabelle "BEFORE UPDATE" (oder VOR dem Commit) auf eine bestimmte Tabelle prüft, ob dieses Update zu viele Zeilen ändern würden, also etwa jedes Update, das mehr als 500 Zeilen ändern würde. Also das die Bedingungen auswertet. zählt, wie viele Zeilen von den Bedingungen betroffen wären, und wenn das einen Grenzwert überschreitet, wird die Ausführung abgebrochen, und Alarm geschlagen, und ein Rollback veranlasst.
Gibt es eine Möglichkeit, das in PSQL abzufragen?
Update-Requests abfangen, die viele Zeilen betreffen?
Moderator: thorben.braun
Im Prinzip schon.
Du kannst per RDB$Get_Context() und RDB$SET_CONTEXT() eine Transaktionsvariable setzen und die Anzahl der Triggeraufrufe zählen.
Wenn deine Zielzahl erreicht/überschritten ist, kannst du eine Exception auswerfen.
https://firebirdsql.org/refdocs/langref ... ption.html
Wenn allerdings keine Transaktion gestartet wurde, gibt es eine Autotransaktion für jeden einzelnen Satz.
Du kannst per RDB$Get_Context() und RDB$SET_CONTEXT() eine Transaktionsvariable setzen und die Anzahl der Triggeraufrufe zählen.
Wenn deine Zielzahl erreicht/überschritten ist, kannst du eine Exception auswerfen.
https://firebirdsql.org/refdocs/langref ... ption.html
Wenn allerdings keine Transaktion gestartet wurde, gibt es eine Autotransaktion für jeden einzelnen Satz.