Oracle11g 将值从一个表更新到另一个表的触发器
我正在尝试创建一个触发器,从db表中获取发生了3次以上的plan_id值,然后在preplan或postplan表中更新与该plan_id相关的金额值,无论plan_id属于何处Oracle11g 将值从一个表更新到另一个表的触发器,oracle11g,Oracle11g,我正在尝试创建一个触发器,从db表中获取发生了3次以上的plan_id值,然后在preplan或postplan表中更新与该plan_id相关的金额值,无论plan_id属于何处 Name Null? Type ----------------------------------------- -------- ---------------------------- PLAN_ID
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
我的表的架构如下所示:
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
数据库表:
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
预先计划:
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
计划后:
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
我为此编写了以下触发器:
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
CREATE OR REPLACE TRIGGER plan_discount_trigger
AFTER INSERT
ON db FOR EACH ROW
DECLARE
l_planid number(5);
l_amount number(5);
BEGIN
SELECT plan_id from db into l_planid group by plan_id having count(:NEW.plan_id)>3;
IF (l_planid>0 and l_planid<6) THEN
select amount into l_amount from preplan;
update preplan SET prepaid.amount = l_amount - (l_amount * 0.1);
ELSIF (l_planid>9 and l_planid<16) THEN
select amount into l_amount from postplan;
update postplan SET postpaid.amount = l_amount - (l_amount * 0.1);
ELSE
dbms_output.put_line("invalid plan!");
end IF;
end;
请告诉我错误是什么以及如何解决???这需要更改
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
SELECT plan_id from db into l_planid group by plan_id having count(:NEW.plan_id)>3;
到
Name Null? Type
----------------------------------------- -------- ----------------------------
PLAN_ID NOT NULL NUMBER
AMOUNT NUMBER
尝试在无效计划周围使用单引号而不是双引号!和countplan\u id>3而不是count:NEW.plan\u id>3@ramana这是同样的错误!!将计划id从db选择为l\U planid应为,将计划id从db选择为l\U planid