我遇到此错误,不知道如何修复错误。请帮助我。
错误(8,11):PL / SQL:忽略SQL语句
错误(10,26):PL / SQL:ORA-00904:“NEWRETAILPRICE”:标识符无效
错误(17,8):PL / SQL:忽略SQL语句
错误(19,57):PL / SQL:ORA-00904:“NEWRETAILPRICE”:标识符无效
错误(25,6):PL / SQL:忽略SQL语句
错误(27,26):PL / SQL:ORA-00904:“OLDRETAILPRICE”:标识符无效
我的代码是
CREATE OR REPLACE TRIGGER product_audit
BEFORE INSERT OR DELETE OR UPDATE ON DD_Products
FOR EACH ROW
DECLARE
Var_ChangeType CHAR(1);
BEGIN
IF INSERTING THEN
VAR_ChangeType := 'I';
INSERT INTO DD_PriceChange
(PriceChangeNo, Change_Type, ChangeBy, ChangeDate,
NewProductPrice,NewRetailPrice)
VALUES (ProductHistory_SEQ.NEXTVAL, VAR_ChangeType, USER, SYSDATE,
:NEW.ProductPrice, :NEW.RetailPrice);
ELSIF UPDATING THEN
VAR_ChangeType := 'U';
INSERT INTO DD_PriceChange
(PriceChangeNo, Change_Type, ChangeBy, ChangeDate,
OldProductPrice,OldRetailPrice,NewProductPrice,NewRetailPrice)
VALUES (ProductHistory_SEQ.NEXTVAL, VAR_ChangeType, USER, SYSDATE,
:OLD.ProductPrice, :OLD.RetailPrice,:NEW.ProductPrice, :NEW.RetailPrice);
ELSE
VAR_ChangeType := 'D';
INSERT INTO DD_PriceChange
(PriceChangeNo, Change_Type, ChangeBy, ChangeDate,
OldProductPrice,OldRetailPrice)
VALUES (ProductHistory_SEQ.NEXTVAL, VAR_ChangeType, USER, SYSDATE,
:OLD.ProductPrice, :OLD.RetailPrice);
END IF;
END;
/
我创建了一个这样的表
Create table DD_PriceChange
(
PriceChangeNo NUMBER(5) PRIMARY KEY,
Change_Type CHAR(1),
ChangeBy VARCHAR2(20),
ChangeDate DATE,
OldProductPrice NUMBER(5),
NewProductPrice NUMBER(5),
OldRetailPrice NUMBER(5),
NewRetailPrice NUMBER(5)
);
和
CREATE SEQUENCE ProductHistory_SEQ;
有人知道我为什么会收到这个错误。
答案 0 :(得分:1)
不知道你为什么会收到这个错误,但是我把所有内容都删掉了,并从基础知识中重建了触发器并使其工作:
CREATE OR REPLACE TRIGGER product_audit
BEFORE INSERT OR DELETE OR UPDATE ON DD_Products
FOR EACH ROW
DECLARE
VAR_ChangeType CHAR(1);
BEGIN
IF INSERTING THEN VAR_ChangeType := 'I';
ELSIF UPDATING THEN VAR_ChangeType := 'U';
ELSE VAR_ChangeType := 'D';
END IF;
INSERT INTO DD_PriceChange
(
PriceChangeNo,
Change_Type,
ChangeBy,
ChangeDate,
NewProductPrice,
NewRetailPrice,
OldProductPrice,
OldRetailPrice
) VALUES (
ProductHistory_SEQ.NEXTVAL,
VAR_ChangeType,
USER,
SYSDATE,
:NEW.ProductPrice,
:NEW.RetailPrice,
:OLD.ProductPrice,
:OLD.RetailPrice
);
END product_audit;
/