表单中有一个名为oncelik的文本项,表中也有列。我已经为列创建了unique index,这样就不能复制记录了。
当用户输入重复数据并尝试提交时,下面的代码将在KEY_COMMIT触发器中运行,并在commit_form; ON_ERROR触发器行之后运行,并显示错误会显示“您无法输入重复的数据”。
在此之后,提交触发器继续运行,form_success变为真,因此窗体还表示“插入成功”。而且form没有重新加载,所以它看起来像是插入的双重数据(但它不是)
当唯一索引错误触发时,我希望停止提交触发器或使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;注意:我知道我可以控制表单上的重复数据,但我更喜欢让数据库错误停止提交过程。
发布于 2019-08-01 08:33:36
问题是,您正在通过ON-ERROR-Trigger放弃错误。
放一个
RAISE FORM_TRIGGER_FAILURE; -- To make your error silent在触发器的末尾,确保故障状态按需要保持不变。
要明确地处理您的唯一密钥问题,可以检查ON-ERROR-Trigger中的RAISE DUP_VAL_ON_INDEX,然后检查RAISE DUP_VAL_ON_INDEX。
https://stackoverflow.com/questions/57303954
复制相似问题