Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Insert后,触发在Oracle中修改一列并更新新插入的行值_Oracle_Triggers - Fatal编程技术网

Insert后,触发在Oracle中修改一列并更新新插入的行值

Insert后,触发在Oracle中修改一列并更新新插入的行值,oracle,triggers,Oracle,Triggers,过程:当用户单击SaveActionfromUI时,将调用java代码中的insert方法。在将值插入主题表时,调用触发器并检查是否为子值(如果为0),然后从标准表中获取首选子值。如果is_sub=1,则从admin_subject.source架构表获取首选_sub 基于v_preferred_sub_值,它正在尝试更新新插入行的主题表。 我从UI运行了insert操作,在调用触发器之后,我检查了主题表中的preferred_子列,它显示空值 请帮帮我,我在那边犯了什么错 /* Formatt

过程:当用户单击SaveActionfromUI时,将调用java代码中的insert方法。在将值插入主题表时,调用触发器并检查是否为子值(如果为0),然后从标准表中获取首选子值。如果is_sub=1,则从admin_subject.source架构表获取首选_sub

基于v_preferred_sub_值,它正在尝试更新新插入行的主题表。 我从UI运行了insert操作,在调用触发器之后,我检查了主题表中的preferred_子列,它显示空值

请帮帮我,我在那边犯了什么错

/* Formatted on 24/09/2015 09:36:39 (QP5 v5.215.12089.38647) */
CREATE OR REPLACE TRIGGER TR_student_PREF_sub_UPDATE
   AFTER INSERT OR UPDATE
   ON student
   REFERENCING NEW AS NEW OLD AS OLD
   FOR EACH ROW
DECLARE
   v_preferred_sub_value   NUMBER (1);
   no_project_record       EXCEPTION;
BEGIN
   IF UPDATING OR INSERTING
   THEN
      IF (:NEW.is_sub = 0 AND :NEW.standard_id IS NOT NULL)
      THEN
         SELECT preferred_sub
           INTO v_preferred_sub_value
           FROM STANDARD
          WHERE standard_id = :NEW.standard_id;
      ELSIF (:NEW.is_sub = 1 AND :NEW.subject_id IS NOT NULL)
      THEN
         SELECT preferred_sub
           INTO v_preferred_sub_value
           FROM admin_subject.source
          WHERE source_id = :NEW.subject_id;
      END IF; /* v_preferred_sub_value IS NOT NULL THEN UPDATE preferred_sub VALUE IN student TABLE */

      IF (v_preferred_sub_value IS NOT NULL)
      THEN
         UPDATE student
            SET preferred_sub = v_preferred_sub_value
          WHERE student_id = :NEW.student_id;

         COMMIT;
      END IF;
   END IF;
EXCEPTION
   WHEN NO_PROJECT_RECORD
   THEN
      NULL;
END TR_student_PREF_sub_UPDATE;
学生表具有学生id、主题id、标准id和is_子值等。 标准表和学生表位于同一架构中。 源是授予所有特权的不同架构。
将触发器更改为before触发器,并将确定的值分配给appriopriate:new伪列。数据库将处理其余的部分

student table have student_id, subject_id, standard_id and is_sub values and more. standard table & student table are in same schema. source is different schema which has grant all privileged.
:NEW.preferred\u sub的值现在将放在表记录中。

我只格式化了代码,并更正了代码最后一行中单词END之后的触发器名称。在通过插入命令插入值时,插入学生表,然后插入值。触发器没有被触发。。。你能告诉我是哪里出的错吗?非常感谢,现在它正在工作。
IF (v_preferred_sub_value IS NOT NULL)
THEN
     :NEW.preferred_sub = v_preferred_sub_value;
END IF;