Oracle 如何使用触发器更新2个表
我有两张桌子Oracle 如何使用触发器更新2个表,oracle,plsql,triggers,Oracle,Plsql,Triggers,我有两张桌子 LVU数据 它有以下字段: emp_name tot_days guru 18 emp_name From_date to_date no_of_days remaining_days guru 02/05/2012 03/05/2012 2 留下数据 它有以
- LVU数据
emp_name tot_days
guru 18
emp_name From_date to_date no_of_days remaining_days
guru 02/05/2012 03/05/2012 2
- 留下数据
emp_name tot_days
guru 18
emp_name From_date to_date no_of_days remaining_days
guru 02/05/2012 03/05/2012 2
在第二个表中,如果插入数据,则将自动计算天数(从日期到日期-从日期)+1
在这里,我需要编写触发器来更新剩余天数列
在所有emp_name
的第一个表中,tot_days
是18天,因此在第二个表中,每当插入记录时,剩余的_days
应该这样计算
remaining_days := tot_days - no_of_days
该(计算)值应在第一个表的tot_days
列(lv_data
)中更新
示例:
emp_name tot_days
guru 18
- 留下数据
emp_name From_date to_date no_of_days remaining_days
guru 02/05/2012 03/05/2012 2 16
现在第一个表应该更新如下:
emp_name tot_days
guru 16
所以我需要更新2个表。有人能帮我通过触发器更新这两个表吗?在表上有一个插入前触发器,它将在插入前设置记录
需要注意的几件事:
- 您的数据模型没有行的唯一标识符
- 我认为你的“没有天数”计算是不对的
用于测试的DDL:
CREATE TABLE lv_data
(
id NUMBER,
emp_name VARCHAR2(240),
tot_days NUMBER
);
CREATE TABLE leave_data
(
id NUMBER,
emp_name VARCHAR2(240),
from_date DATE,
to_date DATE,
no_of_days NUMBER,
remaining_days NUMBER
);
INSERT INTO lv_data
VALUES (1,
'sathya',
18);
INSERT INTO LEAVE_DATA
VALUES ('1',
'sathya',
SYSDATE,
SYSDATE + 2,
NULL,
NULL);
用于测试的DML:
CREATE TABLE lv_data
(
id NUMBER,
emp_name VARCHAR2(240),
tot_days NUMBER
);
CREATE TABLE leave_data
(
id NUMBER,
emp_name VARCHAR2(240),
from_date DATE,
to_date DATE,
no_of_days NUMBER,
remaining_days NUMBER
);
INSERT INTO lv_data
VALUES (1,
'sathya',
18);
INSERT INTO LEAVE_DATA
VALUES ('1',
'sathya',
SYSDATE,
SYSDATE + 2,
NULL,
NULL);