gpt4 book ai didi

plsql - 捕获 psql 中的约束违规

转载 作者:行者123 更新时间:2023-12-02 00:43:25 25 4
gpt4 key购买 nike

我正在使用 SQL Developer,并且已向我的一个表添加了约束。

constraint valid_gender check(gender in ('M','F','I','T'))

当我尝试使用 plsql 过程添加性别为“x”的条目时,它会因违反约束而失败(正如它应该的那样)。

我想在 plsql 过程中添加一个“Catch”,以便如果 valid_gender 被破坏,我可以 raise_application_error 特定于它。这可能吗?

最佳答案

Oracle 将引发异常:

ORA-02290: check constraint (yourschema.valid_gender) violated

您可以在异常处理程序中捕获该异常,并引发自己的异常,而不是通过多种方式使用 raise_application_error

1) 您可以像这样专门捕获 ORA-02290 异常:

declare
e_check_violated exception
pragma exception_init (e_check_violated, -2290);
begin
insert ...
exception
when e_check_violated then
if sqlerrm like '%(yourschema.valid_gender)%' then
raise_application_error(-20001,'Invalid gender');
else
raise;
end if;
end;

2)您可以捕获所有异常并检查它们:

begin
insert ...
exception
when others then
if sqlerrm like 'ORA-02290:%(yourschema.valid_gender)%' then
raise_application_error(-20001,'Invalid gender');
else
raise;
end if;
end;

在大型应用程序中,使用异常处理过程来概括这一点并在表中查找特定于约束的消息是很常见的。

关于plsql - 捕获 psql 中的约束违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220903/

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