ниже приведен простой пример, но сначала позвольте мне объяснить несколько вещей:
в коде plsql, когда вы хотите использовать переменные, вы должны объявить их (как объяснил бит @sticky).
пример:
declare var1 varchar2(10);
var1 varchar2(10);
Вы используете триггер в таблице reels_table1, это приведет к мутации ошибки, однако, поскольку вы использовали before
, вы не столкнулись с ошибкой.
как @Daniel E указывает, что у вставки не будет старого значения.
Обратите внимание, что в приведенном ниже примере я создал тестовую таблицу и добавил в обновление условие, может быть, вы его забудете.
drop table reels_table1
/
create table reels_table1 (id number(4), user_weight number(4), left_weight number(4),weight number(4) )
/
create or replace trigger left_balance
before delete or insert or update on reels_table1
for each row
declare
x number(2) := :new.user_weight;
xx number (2) := :old.user_weight;
begin
update reels_table1 set
user_weight =x+xx where id =1;
update reels_table1 set left_weight = weight - user_weight where id=1;
end;
/