簡體   English   中英

是否可以在Oracle 12c中的另一個表上使用觸發器來填充表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM