如果记录存在,则插入触发器-Oracle
我有桌子: 部门带有部门id(编号)、部门名称(varchar)、如果记录存在,则插入触发器-Oracle,oracle,triggers,Oracle,Triggers,我有桌子: 部门带有部门id(编号)、部门名称(varchar)、经理id(编号)字段 员工具有员工id(编号)、姓名(varchar)、工资(编号)、经理id(编号) 我想创建一个触发器,当数据插入或更新到表员工时,它负责检查表部门中是否存在经理id 触发器可能类似于: create or update trigger manager_exists before insert or update on employees for each row begin if exists **ne
经理id
(编号)字段
员工具有员工id(编号)、姓名(varchar)、工资(编号)、经理id
(编号)
我想创建一个触发器,当数据插入或更新到表员工时,它负责检查表部门中是否存在经理id
触发器可能类似于:
create or update trigger manager_exists
before insert or update on employees
for each row
begin
if exists **new id** into Departments then
INSERT DATA IN EMPLOYEES
else
"Error: MANAGER_ID doesnt exists in Departments"
end if;
end manager_exists;
但是我想不出如何创建这个触发器。
注意:我需要它作为一个触发器。救命啊 我就是这样理解这个问题的:
create or replace trigger manager_exists
before insert or update on employees
for each row
declare
l_mgr number;
begin
select 1
into l_mgr
from dual
where exists (select null
from departments d
where d.manager_id = :new.manager_id
);
exception
when no_data_found then
raise_application_error(-20000, 'That manager does not exist in DEPARTMENTS');
end manager_exists;
换言之:
- 检查您试图插入到
表中的EMPLOYEES
是否存在于MANAGER\u ID
表中DEPARTMENTS
- 不过,这对我来说没有多大意义;我想说,您应该检查它,反之亦然-检查您试图插入到
部门中的
是否存在于经理ID
员工表中。。。但那不是你写的(或者我误解了你说的)
- 不过,这对我来说没有多大意义;我想说,您应该检查它,反之亦然-检查您试图插入到
- 如果是这样的话,很好,不要做任何事情(在触发器中)<导致触发器触发的代码>插入或
语句将执行此任务更新
- 如果没有,请提出错误