Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OracleForms-表单成功在密钥提交中变为真,尽管存在数据库错误_Oracle_Oracleforms - Fatal编程技术网

OracleForms-表单成功在密钥提交中变为真,尽管存在数据库错误

OracleForms-表单成功在密钥提交中变为真,尽管存在数据库错误,oracle,oracleforms,Oracle,Oracleforms,我的表单中有一个名为oncelik的文本项,表中还有一列。我已经为列创建了唯一索引,因此记录不能重复 当用户输入重复数据并尝试提交时,下面的代码在键提交触发器中运行,并在提交表单行之后运行ON_ERROR触发并显示类似“您不能输入重复数据”的错误信息 之后,提交触发器继续运行,form\u success变为true,因此表单也会显示“insert successful”。表单不会重新加载,所以看起来像是插入了重复应用的数据(但不是) 我想在触发唯一索引错误时停止提交触发器或使form_succ

我的表单中有一个名为
oncelik
的文本项,表中还有一列。我已经为列创建了
唯一索引
,因此记录不能重复

当用户输入重复数据并尝试提交时,下面的代码在
键提交
触发器中运行,并在
提交表单行之后运行
ON_ERROR
触发并显示类似“您不能输入重复数据”的错误信息

之后,提交触发器继续运行,
form\u success
变为true,因此表单也会显示“insert successful”。表单不会重新加载,所以看起来像是插入了重复应用的数据(但不是)

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

    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;

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

问题是您正在通过
on-error
-触发器丢弃错误

RAISE FORM_TRIGGER_FAILURE; -- To make your error silent
在触发器结束时,确保故障状态保持在所需状态


要明确地处理您独特的关键问题,您可以在
ON-ERROR
触发器中检查
ERROR\u code
,然后
在索引上提升DUP\u VAL

您应该将表单成功检查放在提交表单之后和提交之后_form@nightfox79它只是改变了运行顺序,仍然form_success为true,并且form在错误消息后显示insert successful。您是否有执行某些操作的on error触发器,如果您忽略on error触发器中的错误,则不会失败anymore@nightfox79是的,我有一个on_错误触发器,其中只有一条ShowMessage行,没有其他内容。它在commit_form行之后运行,并显示消息,然后key_commit继续运行。@81我没有尝试过,但我将messagebox放在了该块中。它不起作用,因为form_的成功是真实的