Oracle在插入另一个表时触发更新

时间:2017-06-21 16:37:05

标签: plsql oracle11g

我想有一个情况,我有2个表,表1是带有工资栏的客户表,表2是税表。 当我在税表中插入一个含有税额的记录时,我希望减去工资的金额,并且用净工资更新客户表(工资栏)。

 CREATE OR REPLACE TRIGGER trig_update
 AFTER INSERT ON tax 
 FOR EACH ROW
 DECLARE 
 net_sal;
 BEGIN
 net_sal := :customers.salary - :tax.amount;
 UPDATE customers (salary) VALUES (net_sal)
 WHERE (tax.cust_id == customers.id);
 END;

我收到编译错误

1 个答案:

答案 0 :(得分:1)

首先,SQL中没有“==”运算符。只有“=”。

其次,您需要在update语句中使用SET子句。它应该是

UPDATE customers
SET salary = net_sal
WHERE tax.cust_id = customers.id;

第三,这是糟糕的桌面设计。不要更新salary列,而是创建一个名为“net_salary”的新列,然后更新该列。如果您必须删除税务记录并插入新的税务记录,该怎么办?你的工资价值仍然会从中扣除旧的税,而且价格不正确。