[英]Is it possible to populate table using trigger on another table in oracle 12c
使用oracle 12c,我有一个用于员工的表和一个用于经理的表,如果新插入的员工薪水> = 5000,则他/她被视为经理。 因此,我想在表employee上创建触发器,以检查新插入的雇员的薪水是否> = 5000,该行是否应在manager表中重复。 这可能吗? 如果是,您能不能给我正确的语法。
首先说一些通俗的话:这可能被认为是不好的数据库设计。 如果您将某个薪水超过某个薪水的员工视为经理,这几乎在同一表中的物理或虚拟列中大喊大叫。 例如,它可能看起来像这样:
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)
);
如果您仍然想使用触发器和第二个manager表,则可以像这样工作:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.