Oracle PL / SQL错误绑定变量

时间:2017-12-10 19:54:16

标签: oracle plsql oracle-apex database-trigger

我检查了所有字段,一切都很好,但我继续收到此错误 当我在sql命令上写这个触发器时,它说已经创建了触发器但是当我检查触发器时它显示无效 这是我的触发器

create or replace trigger "Max_Crew_T1"
   Before insert or update on "CREW"
   for each row 
declare 
   v_count number;
Begin
   select count(*) into v_count from CREW where AirPlaneID=:NEW.AirPlaneID;
   if 
      v_count > 5
   then
      Raise_Application_ERROR(-20343,'Crew number exceeded');
   END IF;
END;

这是错误信息;

PLS-00049: bad bind variable 'NEW.AIRPLANEID'

点击下面的链接获取表格desc

enter image description here

1 个答案:

答案 0 :(得分:1)

错误是因为您在用引号创建表时定义了飞机ID。即“AirPlaneID”因此您需要在触发器中执行相同的操作。

使用引号定义区分大小写的列并不是一个好习惯,因为它会导致所有这些问题,更好地定义没有引号,例如。创建工作人员(飞行员编号(6))..等。反正..

请使用以下内容:

create or replace trigger "Max_Crew_T1"
   Before insert or update on "CREW"
   for each row 
declare 
   v_count number;
Begin
   select count(*) into v_count from CREW where "AirPlaneID"=:NEW."AirPlaneID";
   if 
      v_count > 5
   then
      Raise_Application_ERROR(-20343,'Crew number exceeded');
   END IF;
END;