用于创建函数的未终止的美元带引号字符串postgress

vohkndzv  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(229)

这个问题可能会问很多人,但我试过他们的建议,但它仍然对我不起作用,所以我要问这个问题,我正在努力创建一个 function 当我更新表上的某些内容时,在哪里自动触发update\u at这里是我的语法 .sql 文件:

CREATE OR REPLACE FUNCTION trigger_set_timestamp()
RETURNS TRIGGER AS $BODY$
BEGIN
  NEW.updated_at = NOW();
  RETURN NEW;
END;
$BODY$ LANGUAGE plpgsql;

我总是出错:

unterminated dollar-quoted string at or near "$BODY$
BEGIN
  NEW.updated_at = NOW()"

我试着把它改成 $$ 但是仍然不起作用,我在这个案例中使用了一个名为sqlmigrate的迁移工具go
有人能解决这个问题吗?从昨天开始我就试过了,现在我真的被这个困住了

bmvo0sr5

bmvo0sr51#

它可能来自你的客户,不承认美元报价。
一个典型的解决方法是使用常规单引号。这需要对所有嵌入的单引号进行双引号,但幸运的是您的代码没有单引号,因此:

CREATE OR REPLACE FUNCTION trigger_set_timestamp()
RETURNS TRIGGER AS '
BEGIN
  NEW.updated_at = NOW();
  RETURN NEW;
END;
' LANGUAGE plpgsql;

相关问题