0

我正在尝试在 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'

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

4

1 回答 1

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 中,一个对象名称在创建时用引号引起来它的名称变得区分大小写。我的误解是问题。

于 2012-10-04T00:48:12.993 回答