触发将已删除的条目输入到新表 - SQL plus

时间:2012-11-29 04:38:04

标签: oracle triggers

我正在尝试创建一个触发器,当我们从nm_employees表中删除值时,该触发器将值输入到表terminate_employees中。我已经写了触发器,但它不起作用。我的触发格式对吗?有什么想法吗?

CREATE TABLE nm_departments(
dept2 varchar(20),
CONSTRAINT empPK PRIMARY KEY (dept2)
);

CREATE TABLE nm_employees(
name varchar(20),
dept varchar(20),
CONSTRAINT departments FOREIGN KEY (dept) REFERENCES nm_departments (dept2)ON DELETE         CASCADE
);

CREATE TABLE terminated_employees(
te_name varchar(20),
te_dept varchar(20)
);


CREATE TRIGGER term_employee AFTER DELETE ON nm_employee
FOR EACH ROW
BEGIN
INSERT INTO terminated_employees (NEW.te_name, NEW.te_dept) VALUES  (OLD.name,OLD.dept)
END;

1 个答案:

答案 0 :(得分:1)

您不应该在NEW.语句的列名称上指定INSERT。这些是terminated_employees表中的列,而不是新值。即。

INSERT INTO terminated_employees (te_name, te_dept)
VALUES  (OLD.name,OLD.dept)

您可以在SQL * Plus中使用show errors(或show err)来查看确切的错误。

你有很多问题:

  • 创建触发器上的表名错误(缺少s
  • 在instert声明后遗失;
  • OLD.需要:前缀。即:OLD.name