使用oracle 12c,我有一个员工表和一个管理员表,如果新插入的员工工资> = 5000,那么他/她被认为是经理。因此,我想在表员工上创建触发器,检查新插入的员工的薪水是否应该在管理员表中重复此行。这可能吗?如果是的话,你能不能给我正确的语法。
答案 0 :(得分:1)
首先是一些通用词:这可能被认为是糟糕的数据库设计。如果你认为一个超过一定薪水的员工是经理,那么这几乎就是同一个表中的一个列,无论是物理的还是虚拟的。例如,它可能如下所示:
CREATE TABLE employees (
id NUMBER,
first_name VARCHAR2(10),
last_name VARCHAR2(10),
salary NUMBER(9,2),
is_manager as (case when salary >= 5000 then 1 else 0 end)
CONSTRAINT employees_pk PRIMARY KEY (id)
);
如果您仍想使用触发器和第二个管理器表,它可以这样工作:
CREATE OR REPLACE TRIGGER trig_emp_insert
AFTER INSERT
ON employees
FOR EACH ROW
BEGIN
if (:new.salary >= 5000) then
insert into managers (...) values (...)
end if;
END;