【问题标题】:SQL I don't understand what is wrong with my triggerSQL 我不明白我的触发器出了什么问题
【发布时间】:2020-03-28 12:14:47
【问题描述】:

我很难理解这个错误:

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

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

  1. 创建或替换触发器类触发器
  2. 在每行插入类之前
  3. 开始
  4. 如果(类型 = 'vl' && 质量
  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。谢谢。

【问题讨论】:

  • and替换&amp;&amp;
  • 非常感谢先生,它成功了。

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


【解决方案1】:

你有两个问题:

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

  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;

【讨论】:

  • 鲍勃,莫妮卡怎么了!?
  • 天哪,在问你之前我什至不知道莫妮卡是谁。我不知道这一切都在幕后发生。
  • @Gary_W - SO 是新的 Google。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 2020-02-13
相关资源
最近更新 更多