Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL I don';我不明白我的扳机怎么了_Sql_Oracle_Plsql_Oracle Apex_Database Trigger - Fatal编程技术网

SQL I don';我不明白我的扳机怎么了

SQL I don';我不明白我的扳机怎么了,sql,oracle,plsql,oracle-apex,database-trigger,Sql,Oracle,Plsql,Oracle Apex,Database Trigger,我很难理解这个错误: 第3行错误:PLS-00103:在预期以下情况时遇到符号“&”: ),*&-+/mod剩余rem和或 as | |多集 创建或替换触发器类\u触发器 在为每行插入类之前 开始 如果(类型='vl'&质量

我很难理解这个错误:

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

),*&-+/mod剩余rem和或 as | |多集

  • 创建或替换触发器类\u触发器
  • 在为每行插入类之前
  • 开始
  • 如果(类型='vl'&质量<15000),则
  • 质量:=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;
    
    创建或替换触发器类\u触发器
    在为每行插入类之前
    开始
    如果(类型='vl'&质量<15000),则
    质量:=15000;
    如果结束;
    结束;
    
    我的代码有什么问题?我用的是甲骨文的APEX。谢谢。

    您有两个问题:

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

  • 访问传递给触发器的字段时,必须使用
    :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;
    
    创建或替换触发器类\u触发器
    在课堂上插入之前
    每行
    开始
    IF:NEW.TYPE='vl'和
    :新。质量<15000
    然后
    :新质量:=15000;
    如果结束;
    末级触发;
    
    替换
    &&
    非常感谢,先生,它起作用了。鲍勃,莫妮卡怎么了@天哪,在问你之前我甚至不知道莫妮卡是谁。我不知道这一切都是在幕后发生的。@Gary_W-新谷歌也是如此。