我正在尝试在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'
这个简单的触发器有什么问题?
答案 0 :(得分:2)
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中,不是某种对象名称,当使用引号创建时,它的名称会变为区分大小写。我的误解是问题。