diff --git a/20231207/trigger-01.txt b/20231207/trigger-01.txt index b47a7d934bde6e03b8e44141d4e7d4f233ec4b71..25f505ad76fb2a01af083c84fcdda071072d0988 100644 --- a/20231207/trigger-01.txt +++ b/20231207/trigger-01.txt @@ -51,9 +51,13 @@ testdb-> ; FEHLER: Syntaxfehler bei »if« ZEILE 2: if new.balance <> old.balance then ^ -testdb=> create function log_change () returns trigger language plpgsql as $$ begin if new.balance <> old.balance then insert into log_change (account_id, change, datetime) values (old.id, new.balance - old.balance, now ()); -end if; -return new; +testdb=> create function log_change () returns trigger language plpgsql as $$ +begin + if new.balance <> old.balance then + insert into log_change (account_id, change, datetime) + values (old.id, new.balance - old.balance, now ()); + end if; + return new; end; $$ ; diff --git a/20231207/trigger-03.txt b/20231207/trigger-03.txt index 0c307ff7b17641af9382752311c91fae17a01f11..6c266e6f499c57f0e4f1fd543f244b2593a801ae 100644 --- a/20231207/trigger-03.txt +++ b/20231207/trigger-03.txt @@ -10,10 +10,12 @@ FEHLER: kann Funktion log_change() nicht löschen, weil andere Objekte davon ab DETAIL: Trigger after_update_account für Tabelle account hängt von Funktion log_change() ab TIP: Verwenden Sie DROP ... CASCADE, um die abhängigen Objekte ebenfalls zu löschen. testdb=> create or replace function log_change () returns trigger language plpgsql as $$ -begin if new.balance <> old.balance then - insert into account_log (account_id, change, datetime) values (old.id, new.balance - old.balance, now ()); -end if; -return new; +begin + if new.balance <> old.balance then + insert into account_log (account_id, change, datetime) + values (old.id, new.balance - old.balance, now ()); + end if; + return new; end; $$ ;