首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管存在数据库错误,OracleForms - form_success在key_commit中成为真。

尽管存在数据库错误,OracleForms - form_success在key_commit中成为真。
EN

Stack Overflow用户
提问于 2019-08-01 07:35:09
回答 1查看 2.3K关注 0票数 1

表单中有一个名为oncelik的文本项,表中也有列。我已经为列创建了unique index,这样就不能复制记录了。

当用户输入重复数据并尝试提交时,下面的代码将在KEY_COMMIT触发器中运行,并在commit_form; ON_ERROR触发器行之后运行,并显示错误会显示“您无法输入重复的数据”。

在此之后,提交触发器继续运行,form_success变为真,因此窗体还表示“插入成功”。而且form没有重新加载,所以它看起来像是插入的双重数据(但它不是)

当唯一索引错误触发时,我希望停止提交触发器或使form_success为false。提交代码在下面,有什么建议吗?

代码语言:javascript
复制
    Pre_Commit_Form;
    commit_form;  --this line fires the ON_ERROR
    Post_Commit_Form;     

    if form_success then  --after error this block runs and form says insert success
        ShowMessage(proc,True,'AKA-00303');
    else
        ShowError;
        ShowMessage(proc,True,'AKA-00304');
    end if;

注意:我知道我可以控制表单上的重复数据,但我更喜欢让数据库错误停止提交过程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 08:33:36

问题是,您正在通过ON-ERROR-Trigger放弃错误。

放一个

代码语言:javascript
复制
RAISE FORM_TRIGGER_FAILURE; -- To make your error silent

在触发器的末尾,确保故障状态按需要保持不变。

要明确地处理您的唯一密钥问题,可以检查ON-ERROR-Trigger中的RAISE DUP_VAL_ON_INDEX,然后检查RAISE DUP_VAL_ON_INDEX

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57303954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档