Postgresql
錯誤:“END”處或附近的語法錯誤
我正在嘗試使用觸發器,並在網上找到了一些我之前幾乎複製過的範例,除了更改了表名和行數。但不知何故,我不斷收到語法錯誤並且函式不存在。
我認為它必須與模式有關,因為您可以在表下方看到該表的模式名稱為 public,因此我在創建和引發
check_number_of_row()
但仍然出現錯誤時添加了 public。我已經從程式碼中刪除了模式public
,因為它也無濟於事。CREATE OR REPLACE FUNCTION check_number_of_row() RETURNS trigger LANGUAGE plpgsql AS $$BEGIN IF (SELECT count(*) FROM public.comment) > 3 THEN RAISE EXCEPTION 'INSERT statement exceeding maximum number of rows for this table' END IF; END;$$; -- this is the syntax END error happened CREATE TRIGGER tr_check_number_of_row BEFORE INSERT ON public.comment FOR EACH ROW EXECUTE PROCEDURE check_number_of_row(); -- this is where it says function does not exist
psql --version psql (PostgreSQL) 13.4
提前感謝您的任何幫助和建議。
返回的確切錯誤是:
ERROR: syntax error at or near "END" LINE 9: END IF; ^
您的
RAISE EXCEPTION
語句需要以分號結尾:CREATE OR REPLACE FUNCTION check_number_of_row() RETURNS trigger LANGUAGE plpgsql AS $$BEGIN IF (SELECT count(*) FROM public.comment) > 3 THEN RAISE EXCEPTION 'INSERT statement exceeding maximum number of rows for this table'; END IF; END;$$;