尝试在在线建模资源https://www.db-fiddle.com/上创建触发器时
CREATE OR REPLACE FUNCTION update_datem()
RETURNS trigger AS
$$
BEGIN
NEW.dateM = DATE_TRUNC('MONTH', NEW.date);
RETURN NEW;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER markk_bi
BEFORE INSERT OR UPDATE
ON markk
FOR EACH ROW
EXECUTE PROCEDURE update_datem();
抛出错误:
Schema Error: error: unterminated dollar-quoted string at or near "$$ BEGIN NEW.dateM = DATE_TRUNC('MONTH', NEW.date);"
Schema Error: error: syntax error at or near "RETURN"
Schema Error: error: unterminated dollar-quoted string at or near "$$ LANGUAGE plpgsql;"
Schema Error: error: function update_datem() does not exist
如何避免?
PS 熬夜不好。所以我改为$爬进这个问题@。事实上,问题正是一些数据库客户端,包括在 db-fiddle 上使用的客户端,忽略了什么$$
旧版本的问题
CREATE OR REPLACE FUNCTION update_datem()
RETURNS trigger AS
@BODY@
BEGIN
NEW.dateM = DATE_TRUNC('MONTH', NEW.date);
RETURN NEW;
END;
@BODY@
LANGUAGE plpgsql;
CREATE TRIGGER markk_bi
BEFORE INSERT OR UPDATE
ON markk
FOR EACH ROW
EXECUTE PROCEDURE update_datem();
抛出错误:
Schema Error: error: syntax error at or near "@"
Schema Error: error: syntax error at or near "RETURN"
Schema Error: error: function update_datem() does not exist
