Oracle11g 将值从一个表更新到另一个表的触发器

Oracle11g 将值从一个表更新到另一个表的触发器,oracle11g,Oracle11g,我正在尝试创建一个触发器,从db表中获取发生了3次以上的plan_id值,然后在preplan或postplan表中更新与该plan_id相关的金额值,无论plan_id属于何处 Name Null? Type ----------------------------------------- -------- ---------------------------- PLAN_ID

我正在尝试创建一个触发器,从db表中获取发生了3次以上的plan_id值,然后在preplan或postplan表中更新与该plan_id相关的金额值,无论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