我正在尝试创建一个触发器,当我们从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;
答案 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
);
OLD.
需要:
前缀。即:OLD.name