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

2 sql oracle plsql database-trigger oracle-apex

我很难理解这个错误:

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

) , * & - + / 在 mod 余数 rem 和 or as || 多集

  1. 创建或替换触发器 class_trigger
  2. 在为每一行插入课堂之前
  3. 开始
  4. IF (type = 'vl' && mass < 15000) THEN
  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;
Run Code Online (Sandbox Code Playgroud)

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

Bob*_*ica 6

你有两个问题:

  1. PL/SQLAND用作布尔 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;
Run Code Online (Sandbox Code Playgroud)