OracleForms - form_success 在 key_commit 中变为真,尽管存在数据库错误
OracleForms - form_success becomes true in key_commit despite there is database error
我的表单中有一个名为 oncelik
的文本项,还有 table 中的一列。我为该列创建了 unique index
,因此记录不能重复。
当用户输入重复数据并尝试提交时,下面的代码在 KEY_COMMIT
触发器中运行,并且在行 commit_form;
ON_ERROR
触发器触发后显示错误,如“你无法输入重复数据'
在该提交触发器保持 运行 并且 form_success
变为真之后,表单也显示 "insert successful"。并且表单不会重新加载,所以它看起来像是插入了重复的数据(但它不是)
我想在触发唯一索引错误时停止提交触发器或使 form_success
为假。提交代码如下,有什么建议吗?
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
-Trigger 中的 ERROR_CODE
,然后改为 RAISE DUP_VAL_ON_INDEX
。
我的表单中有一个名为 oncelik
的文本项,还有 table 中的一列。我为该列创建了 unique index
,因此记录不能重复。
当用户输入重复数据并尝试提交时,下面的代码在 KEY_COMMIT
触发器中运行,并且在行 commit_form;
ON_ERROR
触发器触发后显示错误,如“你无法输入重复数据'
在该提交触发器保持 运行 并且 form_success
变为真之后,表单也显示 "insert successful"。并且表单不会重新加载,所以它看起来像是插入了重复的数据(但它不是)
我想在触发唯一索引错误时停止提交触发器或使 form_success
为假。提交代码如下,有什么建议吗?
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
-Trigger 中的 ERROR_CODE
,然后改为 RAISE DUP_VAL_ON_INDEX
。