Oracle PLS-00049:更新触发器中的绑定变量错误
我正试图在Oracle 11g Express Edition中编写一个简单的触发器:Oracle PLS-00049:更新触发器中的绑定变量错误,oracle,triggers,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' 这个简单触发器有什么问题?重写CR
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'
这个简单触发器有什么问题?重写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 EMPLOYEE
( Employee_ID NUMBER(6,0),
HireDate DATE,
Salary NUMBER(8,2),
CONSTRAINT EMPLOYEE_PK PRIMARY KEY (Employee_ID) ENABLE
);
问题消失了
编辑:
正如@Sathya所解释的,在Oracle中,对象名在其名称周围加上引号时,不会区分大小写。我的误解是问题。表EMPLOYEE中是否有“结束日期”列?是的,它是表EMPLOYEE中的列。如果使用引号,您也可以使用相同大小写的引号输入查询。例如:新的“结束日期”=''。顺便说一句,表没有END_DATE列?在Oracle中,它不是一个对象名,当用引号围绕它的名称创建时,它就不区分大小写了