带插入和计算的sql触发器

hfyxw5xn  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(366)

我有两个表,tablea有一个主键(a\u id)和一个salary列。表b有一个主键(b\u id)和一个paymentamount列。
我需要创建一个触发器,这样一旦插入tableb b\u id,触发器就会转到tablea,找到一个与b\u id匹配的\u 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;

我以前从未使用过触发器,所以如果我走错了方向,我很抱歉。

chhqkbe1

chhqkbe11#

我想这正是你想要的:

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 ,我们分配给一个变量。

相关问题