Ich versuche eine Ausnahme auszulösen, wenn eine schreibgeschützte Spalte geändert wird. Dafür benutze ich einen Trigger vor dem Update, aber ich bekomme Syntaxfehler.Ausnahme bei Aktualisierung der schreibgeschützten Spalte mit PostgreSQL auslösen
DROP TRIGGER IF EXISTS check_update_guid_line ON line;
CREATE TRIGGER check_update_guid_line
BEFORE UPDATE ON line FOR EACH ROW
WHEN (OLD.guid IS DISTINCT FROM NEW.guid) THEN
RAISE EXCEPTION 'you cant modify the guid of a line');
ERROR: syntax error at or near "THEN" LINE 29: ...OLD.guid IS DISTINCT FROM NEW.guid) THEN
Ich glaube, ich eine Prozedur machen könnte den Code eine Reihe von Linien erstrecken, aber ich würde dieser Code wissen, warum sowieso nicht funktionieren.
Sie können nicht den Trigger-Code inline mit der Trigger-Anweisung erstellen setzen. Sie müssen eine Funktion erstellen, auf die Sie verweisen können. Details und Beispiele finden Sie im Handbuch: https://www.postgresql.org/docs/current/static/sql-createtrigger.html#SQL-CREATETRIGGER-EXAMPLES und https://www.postgresql.org/docs/current /static/plpgsql-trigger.html –