我正在尝试通过postgres trigger验证一个字段。
如果目标字段具有十进制值,我需要通过警告但允许用户保存记录。
我尝试了选项
RAISE EXCEPTION,RAISE - USING
但它在 UI 上抛出错误并且事务被中止。
我尝试了选项
RAISE NOTICE,RAISE WARNING
通过它不显示警告并简单地保存记录。
如果有人对此提供帮助,那就太好了。
提前致谢
我正在尝试通过postgres trigger验证一个字段。
如果目标字段具有十进制值,我需要通过警告但允许用户保存记录。
我尝试了选项
RAISE EXCEPTION,RAISE - USING
但它在 UI 上抛出错误并且事务被中止。
我尝试了选项
RAISE NOTICE,RAISE WARNING
通过它不显示警告并简单地保存记录。
如果有人对此提供帮助,那就太好了。
提前致谢
您需要设置client_min_messages
为显示NOTICE
s 和WARNING
s 的级别。你可以这样做:
SET LOCAL
SET
ALTER USER
ALTER DATABASE
postgresql.conf
然后,您必须在运行查询后检查来自服务器的消息并将它们显示给用户或以其他方式处理它们。如何做到这一点取决于您使用的数据库驱动程序,您尚未指定。PgJDBC?libpq?其他?
请注意,发出通知或警告不会导致事务暂停并等待用户输入。你真的不想那样做。而是RAISE
中止EXCEPTION
事务。将问题告诉用户,如果他们批准,则重新运行事务,可能设置一个标志以指示不应再次引发异常。
在技术上可以让 PL/Perlu、PL/Pythonu 或 PL/Java 触发暂停执行,同时通过侧通道(如 TCP 套接字)请求客户端批准操作。不过,这将是一个非常糟糕的主意。