gpt4 book ai didi

postgresql - 陷阱特定的命名唯一约束异常

转载 作者:行者123 更新时间:2023-11-29 12:08:21 25 4
gpt4 key购买 nike

如果 plpgsql 函数违反了特定命名的唯一约束,我想在它中捕获异常,并且对于所有其他情况,将原始错误抛给客户端,包括其他唯一约束(匹配不同名称) .

我可以在手册中看到如何使用 EXCEPTION WHEN unique_violation THEN 来处理所有违反唯一约束的情况,但我如何才能只针对特定的情况执行此操作?

最佳答案

您可以通过异常处理程序中的GET STACKED DIAGNOSTICS 获取约束名称:

CREATE TABLE t (id INTEGER PRIMARY KEY);

DO $$
DECLARE
n TEXT;
c TEXT := 'my_constraint_name';
BEGIN
INSERT INTO t VALUES (1), (1);
EXCEPTION
WHEN UNIQUE_VIOLATION THEN
GET STACKED DIAGNOSTICS n := CONSTRAINT_NAME;
IF n = c THEN
-- do whatever, your constraint raised this
ELSE
RAISE;
END IF;
END $$

关于postgresql - 陷阱特定的命名唯一约束异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com