J'essaie de déclencher une exception lorsqu'une colonne en lecture seule est modifiée. Pour cela j'utilise un trigger avant la mise à jour, mais j'obtiens des erreurs de syntaxe.Soulever une exception lors de la mise à jour d'une colonne en lecture seule avec PostgreSQL
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
Je suppose que je pourrais faire une procédure partir du code d'un groupe de lignes, mais je voudrais savoir pourquoi ce code ne fonctionne pas de toute façon.
Vous ne pouvez pas mettre la ligne de code de déclenchement avec l'instruction create trigger. Vous devez créer une fonction que vous pouvez référencer. S'il vous plaît voir le manuel pour plus de détails et des exemples: https://www.postgresql.org/docs/current/static/sql-createtrigger.html#SQL-CREATETRIGGER-EXAMPLES et https://www.postgresql.org/docs/current /static/plpgsql-trigger.html –