已创建Oracle SQL Trigger,但仍无效

时间:2013-12-05 21:54:30

标签: sql database oracle triggers compilation

我创建了一个触发器,当“Stock”表中的“Quatite”列更新时,可以在名为“Reapprovisionnement”的表中添加新行

Create or Replace trigger Reap
after update of quantite on stock for each row
when (new.quantite <new.limite)
declare
    x varchar(20);
BEGIN
    select distinct Nom into X
        from produit
        where Code = :new.codeProduit;

    insert into Reapprovisionnement values (X, :new.CodeProduit);
END;

此触发器编译并创建时没有错误。

但是当我发出

Update Stock set Quantite = 0 where CodeProduit = 'det_isis'

我得到"Quantite" value 0 is illegal,因此这里的触发器应该通过在“Approvisionnement”中创建一个新行来完成它的工作;然而,当我尝试这里时,我得到的是

ERROR at line 1:
ORA-04098: trigger 'SYSTEM.REAPROV' is invalid and failed re-validation

通常,我在创建带有编译错误的触发器时会出现此错误,但这次触发器是正常创建的,没有错误或任何错误。

1 个答案:

答案 0 :(得分:0)

发表我的评论作为答案,因为它解决了OP的问题。

您创建名为REAP的触发器,并将消息创建为REAPROV。

禁用/删除旧的。它应该工作正常。