如果项目的价格设置为超过最便宜项目价值四倍的值,我必须编写一个引发错误的SQL触发器。 表的名称是itemType,价格列的名称是价格。 这就是我的尝试,但我似乎无法让它发挥作用。
CREATE OR REPLACE TRIGGER harekrishna
BEFORE INSERT ON itemType
REFERENCING NEW AS newrow
FOR EACH ROW
DECLARE
hPrice NUMBER;
BEGIN
SELECT price INTO hPrice
FROM itemType
WHERE price = :newrow.price;
IF hPrice > 4 * MIN(price)
raise_application_error(-20000, (‘Price of item’ |:newrow.price |‘greater than 4 times the least expensive item’);
END IF;
答案 0 :(得分:1)
在最后一行中,您的引号字符错误,缺少THEN
和遗失END
。尝试一下,如果你有更多的错误,请告诉我。
CREATE OR REPLACE TRIGGER harekrishna
BEFORE INSERT ON itemType
REFERENCING NEW AS newrow
FOR EACH ROW
DECLARE
hPrice NUMBER;
BEGIN
SELECT min(price) INTO hPrice
FROM itemType;
IF :newrow.price > 4 * hPrice THEN
raise_application_error(-20000, 'Price of item' ||:newrow.price ||'greater than 4 times the least expensive item');
END IF;
END;
此选择的逻辑也毫无意义,因此我将其更改为获得最低价格,如果只是使用:newrow
。