带插入和计算的触发器
Trigger with insert and calculations
我有两个表,TableA 有一个主键 (A_ID) 和一个工资列。
Table B 有一个主键 (B_ID) 和一个 paymentAmount 列。
我需要创建一个触发器,以便一旦插入 TableB B_ID,触发器就会转到 TableA,找到与 [=20 匹配的 A_ID =], 获取相关列的薪水然后除以 12 最后将计算结果添加到 TableB paymentAmount 列。
这是我的尝试,但无法编译;
CREATE TRIGGER test AFTER INSERT ON TableB
FOR EACH ROW
BEGIN
UPDATE TableB
SET TableB.paymentamount = TableA.salary / 12 WHERE TableA.staffid = TableB.staffid
END;
我以前从未使用过触发器,如果我用错了方法,我深表歉意。
我认为这符合您的要求:
create trigger test before insert on tableb
for each row
declare
v_salary number;
begin
select salary into v_salary from tablea a where a.a_id= :new.b_id;
:new.paymentamount := v_salary / 12;
end;
/
简而言之:这是一个before
触发器,它修改即将插入的行中的paymentamount
。为了获得相关值,我们查询 tablea
以查找其 a_id
与新插入的 b_id
匹配的行,并恢复相应的 salary
,我们将其分配给变量。
我有两个表,TableA 有一个主键 (A_ID) 和一个工资列。 Table B 有一个主键 (B_ID) 和一个 paymentAmount 列。
我需要创建一个触发器,以便一旦插入 TableB B_ID,触发器就会转到 TableA,找到与 [=20 匹配的 A_ID =], 获取相关列的薪水然后除以 12 最后将计算结果添加到 TableB paymentAmount 列。
这是我的尝试,但无法编译;
CREATE TRIGGER test AFTER INSERT ON TableB
FOR EACH ROW
BEGIN
UPDATE TableB
SET TableB.paymentamount = TableA.salary / 12 WHERE TableA.staffid = TableB.staffid
END;
我以前从未使用过触发器,如果我用错了方法,我深表歉意。
我认为这符合您的要求:
create trigger test before insert on tableb
for each row
declare
v_salary number;
begin
select salary into v_salary from tablea a where a.a_id= :new.b_id;
:new.paymentamount := v_salary / 12;
end;
/
简而言之:这是一个before
触发器,它修改即将插入的行中的paymentamount
。为了获得相关值,我们查询 tablea
以查找其 a_id
与新插入的 b_id
匹配的行,并恢复相应的 salary
,我们将其分配给变量。