Oracle 如何防止用户在多行块中一次创建多个记录?

Oracle 如何防止用户在多行块中一次创建多个记录?,oracle,oracleforms,Oracle,Oracleforms,我有一个基于表的具有多行块的表单。要求是用户一次只能在块中输入一行并提交它。在提交第一行之前,不应允许他们创建第二行 我试着使用这样的WHEN-CREATE-RECORD触发器: if :system.block_status = 'CHANGED' then alert('Can only create one record at a time'); end if; 但是,即使在提交更改后,这也会阻止我创建新记录。一种方法是循环遍历所有记录,如果第二条记录不为空,则通知用户 DECL

我有一个基于表的具有多行块的表单。要求是用户一次只能在块中输入一行并提交它。在提交第一行之前,不应允许他们创建第二行

我试着使用这样的WHEN-CREATE-RECORD触发器:

if :system.block_status = 'CHANGED' then
    alert('Can only create one record at a time');
end if;

但是,即使在提交更改后,这也会阻止我创建新记录。

一种方法是循环遍历所有记录,如果第二条记录不为空,则通知用户

DECLARE
    n_index NUMBER := 0;
BEGIN
    Go_block('block_name');

    first_record;

    WHILE :SYSTEM.last_record != 'TRUE' LOOP
        next_record;

        IF :block_name.item_name IS NOT NULL THEN --replace item_name with one which the user will enter all the time
          n_index := n_index + 1;
        END IF;

        IF n_index > 0 THEN
          Alert('Only one record can be created at a time!');
        END IF;
    END LOOP;
END; 

谢谢我在哪里做这个?e、 g.用户只需单击最后一条记录下方的鼠标即可创建新行(或者我可以阻止吗?)您可以在创建记录时在
上执行此操作,或在验证记录时在
上执行此操作-查看哪个操作适合您@Shaz@SathyajithBhat@Shaz我相信
创建记录时
验证记录时
触发器不能支持
去块
下一条记录
行(因为它们是受限过程)因此,这种循环解决方案并不适用于创建新记录。
BEGIN
  -- WHEN-NEW-RECORD-INSTANCE
  IF :SYSTEM.CURSOR_RECORD > 1 THEN
    DELETE_RECORD;
  END IF;
END;