Database 插入后触发器不工作? 创建或更换触发器螺柱 插入错误后 每行 开始 如果(年龄
这是我的触发码。实际上我是DBMS的新手。我犯了个错误Database 插入后触发器不工作? 创建或更换触发器螺柱 插入错误后 每行 开始 如果(年龄,database,oracle,triggers,Database,Oracle,Triggers,这是我的触发码。实际上我是DBMS的新手。我犯了个错误 CREATE OR REPLACE TRIGGER stud AFTER INSERT ON error FOR EACH ROW BEGIN IF (age < 0) THEN RAISE.APPLICATION.ERROR(-2000,'No negative'); END IF; END; 第3行的错误:PLS-00103:在预期以下情况之一时遇到“;”符号: ,*&-+/mod剩余rem 作为 从进入| |多集散装年日_ 1
CREATE OR REPLACE TRIGGER stud
AFTER INSERT ON error
FOR EACH ROW
BEGIN
IF (age < 0) THEN
RAISE.APPLICATION.ERROR(-2000,'No negative');
END IF;
END;
第3行的错误:PLS-00103:在预期以下情况之一时遇到“;”符号:
,*&-+/mod剩余rem
作为
从进入| |多集散装年日_
1.创建或更换触发器螺柱
2.插入错误后
3.每行
4.开始
5.如果(年龄<0)那么
我是根据我引用的语法写的!怎么了我不知道
ERROR at line 3: PLS-00103: Encountered the symbol ";" when expecting one of the following:
, * & - + / at mod remainder rem
as
from into || multiset bulk year DAY_
1. CREATE OR REPLACE TRIGGER stud
2. AFTER INSERT ON error
3. FOR EACH ROW
4. BEGIN
5. IF (age < 0) THEN
不是
及
if(:new.age<0)
不是
if(年龄<0岁)
:new
和:old
限定符在update
触发器中更为相关,因为它们允许您引用数据库中当前的值以及通过update语句输入的新值。insert
触发器只能访问:new
值,因为数据库中当前没有行。我承认,我不能100%确定:新的限定符在插入触发器中是强制性的,但即使不是,我还是建议使用它是一种好的做法,因为它有助于代码更清晰。除了中关于
而不是的错误之外,在提升.APPLICATION\u ERROR
必须指定值的范围,无论是old
还是new
。否则,如果
条件为r将
转换为旧值还是新值,Oracle如何知道
Oracle有一个关于将旧作为旧引用和将新作为新引用的条款,这是有原因的。值的状态需要非常清楚,无论是旧值还是新值。因为,只提到列名而不告诉Oracle是检查旧值还是新值是模糊的。这是需要验证的值 是啊,成功了!你能告诉我为什么需要“:new”吗?它实际上是什么?我已经更新了我的答案,并做了进一步的解释。别忘了,如果你的问题解决了,你可以投票或接受谢谢,帮了大忙!:)
RAISE_APPLICATION_ERROR
RAISE.APPLICATION.ERROR
if (:new.age < 0)
if (age < 0)