我试图在只读列被修改时引发异常。为此,我在更新之前使用触发器,但是我收到了语法错误。用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
我想我可以做扩展码了一堆行的过程,但我想知道为什么这个代码不工作,无论如何。
你不能把触发器代码内嵌在CREATE TRIGGER声明。你需要创建一个你可以参考的函数。有关详细信息和示例,请参阅手册:https://www.postgresql.org/docs/current/static/sql-createtrigger.html#SQL-CREATETRIGGER-EXAMPLES和https://www.postgresql.org/docs/current /static/plpgsql-trigger.html –