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