【发布时间】:2011-07-07 13:11:36
【问题描述】:
所有, 我只是想创建一个触发器,它将从 TABLE EMP 中选择一条完整的记录,并在 UPDATE 尝试时将其插入到 TABLE EMP_ARCHIVE 中(顾名思义,EMP_ARCHIVE 表只是一个历史表,用于存储对邮件 EMP 表所做的更改)。两个表具有相同的字段/列。以下是我要创建的触发器。我知道有问题,但无法弄清楚。它在 INSERT 命令之后的“(”处引发错误。任何帮助将不胜感激。 如果有一些基本错误,请原谅我,因为我是这些新手。
CREATE OR REPLACE TRIGGER Save_EMP_Changes
BEFORE UPDATE ON EMP
FOR EACH ROW
BEGIN
INSERT INTO EMP_ARCHIVE
(
emp_id, emp_name,
emp_age, emp_sex,
emp_active
)
SELECT
:old.emp_id, :old.emp_name,
:old.emp_age, :old.emp_sex,
:old.emp_active
FROM EMP
WHERE emp_id = :old.emp_id
END;
【问题讨论】:
-
您的语法错误是 Select 需要括号括起来。不过,a_horse_with_no_name 提供了正确的答案。您根本不需要 SELECT。
-
包含实际的错误消息(ORA-xxxxx 错误号以及错误文本)通常会有所帮助。有时错误会在没有它的情况下跳出来,但有时错误是非常有用的信息。