我試圖在只讀列被修改時引發異常。爲此,我在更新之前使用觸發器,但是我收到了語法錯誤。用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 –