Я пытаюсь создать триггер, который будет принимать значение из одной таблицы, а затем выполнить вычитание с другим значением в другой таблице.
Триггер будет работать в таблице, может (депозит), и тогда я бы хотел взять значение, которое пользователь только что вставил в таблицу депозитов, и вычесть его значением в другой таблице (аккаунте). У меня нет проблем, чтобы получить следующий код для компиляции:
CREATE OR REPLACE TRIGGER aifer_insättning
AFTER INSERT
ON deposit
FOR EACH ROW
WHEN (new.belopp is not null)
BEGIN
UPDATE account SET SALDO = saldo + :new.belopp;
end;
/
Но, конечно, это обновление всех строк в учетной записи таблицы. Я перепробовал все, чтобы он работал только с одним рядом, но я не могу его получить. У кого-нибудь есть предложения, как я могу решить эту проблему?
Вот мои таблицы:
SQL> desc account
Name Null? Type
----------------------------------------- -------- ------------
KNR NOT NULL NUMBER(8)
KTNR NOT NULL NUMBER(6)
REGDATUM NOT NULL DATE
SALDO NUMBER(10,2)
SQL> desc deposit
Name Null? Type
----------------------------------------- -------- ------------
RADNR NOT NULL NUMBER(9)
PNR NOT NULL VARCHAR2(11)
KNR NOT NULL NUMBER(8)
BELOPP NUMBER(10,2)
DATUM NOT NULL DATE