【发布时间】:2016-12-21 11:04:30
【问题描述】:
我有一个包含 4 列的表 OBJECTS:id、type_id、type_desc 和 state_id。
如果 state_id 是“DELETE”,我想中止删除行并显示一条警告消息,提示“您无法删除此行”。 这是 PRE_DELETE 触发器:
begin
if :OBJECTS.state_id = 'DELETE' then
set_item_instance_property('OBJECTS.state_id', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'ERROR');
if show_alert('ALERT_DEL') = alert_button1 then
null;
end if;
raise FORM_TRIGGER_FAILURE;
end if;
end;
很遗憾,警报消息不会显示。
编辑: 我之前忘了提这个: Oracle Forms 返回错误 FRM-40741: Unable to locate record 0 on block OBJECTS。
编辑: 我也在尝试做一个 PRE-UPDATE 触发器:
declare
stateID varchar2(10);
pressed_button number(2,0);
info number(2,0);
begin
stateID := get_item_property(:OBJECTS.state_id, DATABASE_VALUE);
set_alert_property('ALERT_INFO',alert_message_text,'STATE_ID: ' || stateID);
info := show_alert('ALERT_INFO');
if stateID = 'DELETE' then
set_item_instance_property('OBJECTS.state_id', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'ERROR');
pressed_button := show_alert('ALERT_EDIT');
raise FORM_TRIGGER_FAILURE;
end if;
end;
我收到错误 FRM-40105:无法解析对项目 DELETE 的引用。 所以我创建了 ALERT_INFO 警报来显示存储在数据库中的 state_id 的值。我什么也没显示。我做错了什么?
【问题讨论】:
标签: oracle plsql oracleforms