SQL我不明白我的触发器有什么问题

时间:2019-12-03 18:39:06

标签: sql oracle plsql oracle-apex database-trigger

我很难理解这个错误:

  

第3行出现错误:PLS-00103:在预期以下情况之一时遇到了符号“&”:

     

),*&-+ /在mod余数rem或      作为||多集

  1. 创建或替换触发器class_trigger
  2. 在针对每行的类上插入之前
  3. 开始
  4. IF(type ='vl'&& mass <15000)然后
  5. 质量:= 15000;

代码为:

CREATE OR REPLACE TRIGGER class_trigger
BEFORE INSERT ON Class FOR EACH ROW
BEGIN

  IF (type = 'vl' && mass < 15000) THEN
  mass := 15000;
  END IF;

END;

我的代码有什么问题?我正在使用Oracle的APEX。谢谢。

1 个答案:

答案 0 :(得分:6)

您有两个问题:

  1. PL / SQL使用AND作为布尔AND操作的逻辑运算符,而不是&&

  2. 在访问传递给触发器的字段时,必须使用:OLD:NEW伪行名称对它们进行限定。

因此,您需要将触发器重写为:

CREATE OR REPLACE TRIGGER class_trigger
  BEFORE INSERT ON Class
  FOR EACH ROW
BEGIN
  IF :NEW.TYPE = 'vl' AND
     :NEW.mass < 15000
  THEN
    :NEW.MASS := 15000;
  END IF;
END class_trigger;