首页 > 解决方案 > 用于创建函数的未终止的美元引用字符串 postgress

问题描述

这个问题可能会在这里问很多人,但我已经尝试过他们的建议,但它仍然对我不起作用,所以我要问这个我正在尝试创建一个function在我更新表上的内容时自动触发 update_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()"

我已尝试将其更改为$$但仍然无法正常工作,我在这种情况下使用 Go 和名为sql-migrate的迁移工具

任何人都可以解决这个问题吗?我从昨天开始尝试过,现在我真的被困住了

标签: sqlpostgresqlpsqldatabase-triggersql-function

解决方案


它可能来自您的客户,它不承认美元报价。

一个典型的解决方法是使用常规单引号。这需要双引号所有嵌入的单引号,但幸运的是你的代码没有,所以:

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

推荐阅读