触发器无法在同一个表上查询?

时间:2015-05-12 07:03:53

标签: oracle plsql triggers

我想在表Customer上创建一个BEFORE INSERT或UPDATE TRIGGER的触发器:

Create table customer
(CustNum Number,
DebitNum Number
);

我需要在触发器中进行的验证是,客户未被分配两次相同的DebitNum。

所以我的触发器代码是:

CREATE OR REPLACE TRIGGER XX_MYTRIG
BEFORE INSERT OR UPDATE
ON CUSTOMER
DECLARE
ln_count Number;
BEGIN
    Select count(CustNum) into ln_count
    from customer
    where CustNum:=:New.CustNum 
    and DebitNum:=NEW.DebitNum;
    IF ln_count>0 then
        RAISE fnd_api.g_exc_error;
    END IF;
END;

当我插入或更新时,我注意到select语句甚至没有被执行。 我如何在同一张桌子上查询...?

1 个答案:

答案 0 :(得分:0)

我认为您可以通过在列CustNum和DebitNum上添加唯一约束来实现此目的。这种方法比使用触发器实现的方法更有效。

--volumes-from