2012-04-15 132 views
-2
Student table : student ID, student name, student contact 
Evaluation: EvalID, Eval number 

学生对每个课程进行评估,从1-7开始。我需要的,如果他们给的7Oracle从一个表触发复制数据到另一个表

一个评价什么,我都做了创造一个触发该份学生信息,他们给了到另一个表的评价

Create or replace trigger test 
After Insert on evaluation 
when (eval_number = 0) 
Begin 

我不知道该怎么在这里做.... 有任何想法吗?并且是我的第一个触发点是否正确?

回答

3

下表:

CREATE TABLE student(
studentId INTEGER, 
student_name varchar2(100), 
student_contact varchar2(100)); 

CREATE TABLE evaluation(
evalId INTEGER, 
eval_num INTEGER, 
student_id INTEGER) 

create table eval_audit(
studentId INTEGER, 
student_name VARCHAR2(100), 
student_contact VARCHAR2(100), 
eval_num INTEGER) 

触发插入来自学生的数据时,有7一个评价:

CREATE OR REPLACE TRIGGER AIEvaludation 
AFTER INSERT ON evaluation 
FOR EACH ROW 
WHEN (new.eval_num = 7) 
DECLARE 
    CURSOR curStudent IS 
     SELECT studentid, student_name, student_contact 
      FROM student 
     WHERE studentid = :new.student_id; 
    -- 
    vRowStudent curStudent%ROWTYPE; 
BEGIN 
    OPEN curStudent; 
    FETCH curStudent INTO vRowStudent; 
    CLOSE curStudent; 
    INSERT INTO eval_audit 
    (studentid, student_name, student_contact, eval_num) 
    VALUES (vRowStudent.studentid, vRowStudent.student_name, vRowStudent.student_contact, :new.eval_num); 
END AIEvaludation; 
相关问题