Oracle 触发器将数据从一个表复制到另一个表

Posted

技术标签:

【中文标题】Oracle 触发器将数据从一个表复制到另一个表【英文标题】:Oracle Trigger copy data from one table to another 【发布时间】:2012-04-15 04:39:42 【问题描述】:
Student table : student ID, student name, student contact
Evaluation: EvalID, Eval number

学生从 1 到 7 对每节课进行评价。我需要创建一个触发器来复制学生信息,如果他们给出的评估为 7,则他们给出的评估将放入另一个表中

我所做的是

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

我不知道从这里做什么....有什么想法吗?我的第一个触发器正确吗?

【问题讨论】:

【参考方案1】:

下表:

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;

【讨论】:

以上是关于Oracle 触发器将数据从一个表复制到另一个表的主要内容,如果未能解决你的问题,请参考以下文章

将oracle表数据从两个表复制到另一个表

将数据从一个 oracle 数据库表加载到另一个 oracle 数据库表

将多个表从一个数据库复制到另一个

Oracle SQL Developer - 将视图从一个数据库复制到另一个数据库时出错

调用触发器时将行从一个表复制到另一个表

如何从一个DataTable中复制数据行到另一个DataTable中