PLS-00049:UPDATE触发器中的错误绑定变量

时间:2012-10-04 00:19:19

标签: oracle triggers

我正在尝试在Oracle 11g Express Edition中编写一个简单的触发器:

CREATE OR REPLACE TRIGGER EMPLOYEE_UPDATE 
BEFORE UPDATE ON EMPLOYEE
FOR EACH ROW
BEGIN
   :new.End_Date := SYSDATE;
END;

但它引发了错误:

Error(4,1): PLS-00049: bad bind variable 'NEW.END_DATE'

这个简单的触发器有什么问题?

1 个答案:

答案 0 :(得分:2)

不知怎的,在重写CREATE TABLE后,EMPLOYEE语句问题消失了。我有

CREATE TABLE EMPLOYEE
( "Employee_ID" NUMBER(6,0),
 "HireDate" DATE,
 "Salary" NUMBER(8,2),
 CONSTRAINT "EMPLOYEE_PK" PRIMARY KEY ("Employee_ID") ENABLE
 );

我删除了表并重写了CREATE TABLE语法而没有双引号:

CREATE TABLE EMPLOYEE
( Employee_ID NUMBER(6,0),
 HireDate DATE,
 Salary NUMBER(8,2),
 CONSTRAINT EMPLOYEE_PK PRIMARY KEY (Employee_ID) ENABLE
 );

并且问题消失了。

修改 正如@Sathya所解释的那样,在Oracle中,不是某种对象名称,当使用引号创建时,它的名称会变为区分大小写。我的误解是问题。