【发布时间】:2015-05-12 15:15:32
【问题描述】:
我想在表 Customer 上创建一个 BEFORE INSERT OR 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;
当我插入或更新时,我注意到选择语句甚至没有被执行。 如何查询同一张表...?
【问题讨论】:
-
您的数据模型令人费解。我们希望 CUSTNUM 是名为 CUSTOMER 的表的主键。那么如何给任何客户一个以上的 DEBITNUM,重复或其他方式?
-
你的意思是不能给一个客户两次分配同一个DebitNum;或者不能为两个客户分配相同的 DebitNum?你怎么知道选择没有被执行——除了你在你发布的代码中的第二个 NEW 之前缺少一个冒号,所以触发器可能是无效的?