Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql Oracle在插入另一个表时触发更新_Plsql_Oracle11g - Fatal编程技术网

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

Plsql Oracle在插入另一个表时触发更新,plsql,oracle11g,Plsql,Oracle11g,我想有一个情况,我有两个表,表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 (

我想有一个情况,我有两个表,表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;
我得到一个编译错误

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

其次,在update语句中需要一个SET子句。应该是

UPDATE customers
SET salary = net_sal
WHERE tax.cust_id = customers.id;
第三,这是糟糕的桌子设计。不更新薪资列,而是创建一个名为“net_salary”的新列,并更新该列。如果您必须删除一个税务记录并插入一个新记录,该怎么办?你的工资价值仍然会从中扣除旧税,这是错误的低