0

我正在尝试通过postgres trigger验证一个字段。

如果目标字段具有十进制值,我需要通过警告但允许用户保存记录。

我尝试了选项

RAISE EXCEPTION,RAISE - USING 

但它在 UI 上抛出错误并且事务被中止。

我尝试了选项

RAISE NOTICE,RAISE WARNING 

通过它不显示警告并简单地保存记录。

如果有人对此提供帮助,那就太好了。

提前致谢

4

1 回答 1

2

您需要设置client_min_messages为显示NOTICEs 和WARNINGs 的级别。你可以这样做:

  • 在交易层面与SET LOCAL
  • 在会话级别SET
  • 在用户级别ALTER USER
  • 在数据库级别ALTER DATABASE
  • 在全球范围内postgresql.conf

然后,您必须在运行查询后检查来自服务器的消息并将它们显示给用户或以其他方式处理它们。如何做到这一点取决于您使用的数据库驱动程序,您尚未指定。PgJDBC?libpq?其他?

请注意,发出通知或警告不会导致事务暂停并等待用户输入。你真的不想那样做。而是RAISE中止EXCEPTION事务。将问题告诉用户,如果他们批准,则重新运行事务,可能设置一个标志以指示不应再次引发异常。

在技​​术上可以让 PL/Perlu、PL/Pythonu 或 PL/Java 触发暂停执行,同时通过侧通道(如 TCP 套接字)请求客户端批准操作。不过,这将是一个非常糟糕的主意。

于 2013-01-11T10:58:50.093 回答