Libreoffice Base: Trigger für log-Tabelle nach Löschen von Einträge funktioniert nicht

Hallo zusammen,

ich möchte einen Trigger herstellen, der nach dem Löschen eines Eintrags, die ID des gelöschten Eintrags in einer log Tabelle kopiert. Ich habe den folgenden SQL-command eingegeben:

CREATE TRIGGER backup_entries
AFTER DELETE ON “table_1”
FOR EACH ROW
INSERT INTO “log_table”(“ID”)
SELECT “ID”
FROM “deleted”

Nun kriege ich die Meldung “user lacks privilege or object not found: DELETED”. Das gleiche passiert, wenn ich in einem Trigger versuche, auf die Werte der “inserted” Tabelle zurückzugreifen.

Kann mir jemand dabei helfen?

Woher hast Du den Code? Wenn Du die interne Datenbank HSQLDB nutzt, dann musst Du Dich an das halten, was hier steht: User Guide HSQLDB 1.8

Wenn ich den Guide richtig verstehe, dann brauchst Du eine TriggerClass:

CREATE TRIGGER <name> {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON <table>
    [FOR EACH ROW] [QUEUE n] [NOWAIT] CALL <TriggerClass>;

… und wie die erstellt wird entzieht sich meinen Kenntnissen. Deswegen habe ich da auch nie etwas zusammen mit der internen HSQLDB zum Laufen gebraucht und entsprechend auch nicht im Handbuch hinterlegt.

Wenn Du z.B. mit einer externen MySQL/MariaDB arbeitest ist das natürlich etwas anderes. Auch mit der internen Firebird-Datenbank habe ich zumindest schon einmal einen Trigger zum Erstellen eines Autowert-Feldes hin bekommen. Mit der HSQLDB in der eingebauten Form kann aber schon “user lacks privilege …” ein Hinweis darauf sein, dass das dort nicht funktionieren wird. Ich lasse mich aber gerne eines Besseren belehren, selbst wenn LO in den neuen Versionen voll auf Firebird setzt.