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

Студент дает оценку каждого урока от 1 до 7. Мне нужно создающий триггер, какая информацию копии студента и оценку они дали в другую таблицу, если они дают оценку 7Oracle Trigger копирует данные из одной таблицы в другую

Что я сделал это

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) 

Trigger для вставки данных из студента, когда есть оценка с 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;