我想有一个情况,我有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;
我收到编译错误
答案 0 :(得分:1)
首先,SQL中没有“==”运算符。只有“=”。
其次,您需要在update语句中使用SET子句。它应该是
UPDATE customers
SET salary = net_sal
WHERE tax.cust_id = customers.id;
第三,这是糟糕的桌面设计。不要更新salary列,而是创建一个名为“net_salary”的新列,然后更新该列。如果您必须删除税务记录并插入新的税务记录,该怎么办?你的工资价值仍然会从中扣除旧的税,而且价格不正确。