【问题标题】:Is it possible to populate table using trigger on another table in oracle 12c是否可以在 oracle 12c 中的另一个表上使用触发器填充表
【发布时间】:2015-08-04 04:28:53
【问题描述】:

使用oracle 12c,我有一个员工表和一个经理表,如果新插入的员工工资> = 5000,那么他/她被认为是经理。所以我想在员工表上创建触发器,检查新插入的员工的薪水 >=5000 这一行是否应该在经理表中重复。这可能吗?如果是,您能否简单地给我正确的语法。

【问题讨论】:

    标签: sql oracle


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 2016-02-26
      • 2013-06-04
      • 1970-01-01
      • 2011-08-06
      • 2013-12-03
      相关资源
      最近更新 更多