【发布时间】:2020-02-26 05:24:50
【问题描述】:
我的触发器出现两个错误,无法找出问题所在,非常感谢任何帮助 :) 触发器应在更新 ListPrice 列时触发。触发器不应允许新标价低于 StandardCost + 20%。此触发器应允许任何价格上涨。如果价格过低,IT 应正确放弃更改,如果价格不太低,则允许更新。
首先创建这个表:
CREATE TABLE Product (
ProductID NUMBER NOT NULL PRIMARY KEY,
ListPrice NUMBER NOT NULL,
StandardCost NUMBER NOT NULL,
ProductDesc varchar2(20) NOT NULL
);
然后将此数据插入到表中:
INSERT INTO product VALUES(1, 20,10,'A');
INSERT INTO product VALUES(2, 21,12,'B');
INSERT INTO product VALUES(3, 22,14,'C');
INSERT INTO product VALUES(4, 23,16,'D');
INSERT INTO product VALUES(5, 40,19,'E');
INSERT INTO product VALUES(6, 22,10,'F');
INSERT INTO product VALUES(7, 25,21,'G');
INSERT INTO product VALUES(8, 29,22,'H');
INSERT INTO product VALUES(9, 25,23,'I');
INSERT INTO product VALUES(10, 30,25,'J');
这是我收到错误的触发器的代码:
CREATE OR REPLACE TRIGGER Product_Price_Check
BEFORE UPDATE OF listprice ON product
FOR EACH ROW
DECLARE
sCost NUMBER(10,5);
BEGIN
sCost := (:old.standardcost + (:old.standardcost*0.2));
IF((:new.listprice) > (:old.listprice))
THEN
SET :old.listprice := :new.listprice;
END IF;
IF (:new.listprice < (sCost))
THEN
RAISE_APPLICATION_ERROR(-20101,'cannot update as price is less');
END IF;
END;
/
这些是错误代码:
错误(6,1):PL/SQL:SQL 语句被忽略
错误(6,5):PL/SQL:bORA-00922:缺少或无效选项
【问题讨论】: