Изменение значения таблицы SQL со вставками в другую таблицу
Например:
- Таблица:
Bankaccount
, сid
как первичный ключ и значение. - Таблица:
Category
, сid
как первичный ключ, имя и тип (логический, 0 для положительных транзакций и 1 для отрицательных) - Таблица:
Transaction
, сid
в качестве первичного ключа, значение (например, -10000$ для покупок) и внешний ключ, который ссылаетсяCategory
,
Мой вопрос: возможно ли добавить несколько транзакций в Transaction
таблица, которая вызывает автоматическое изменение значения в Bankaccount
Таблица.
Я надеюсь, что кто-то из вас может помочь мне там!
2 ответа
Решение
Вы должны использовать триггеры: триггер после вставки Примерно так (синтаксис зависит от используемых dbms):
CREATE or REPLACE TRIGGER trg_transaction
AFTER INSERT
ON ***transaction***
DECLARE
-- variable declarations
BEGIN
-- trigger code
UPDATE ***bankaccount*** SET ....
END;
Надеюсь, что это поможет вам!!!
Я думаю, что это именно то, что я искал, большое спасибо! Я только что попробовал это на базе данных H2 и не знаю, что я сделал не так, может быть, вы могли бы помочь мне и там. Мой триггер выглядит так:
create trigger transaction_trig_value_ai after isert of value on transaction
declare
v_value double;
v_type_category boolean;
cursor c_value IS SELECT value from transaction where id = :NEW.idcategory;
cursor c_type_kategorie IS SELECT type from category where id = :NEW.idcategory;
begin
open c_value;
fetch c_value into v_value;
close c_value;
open c_type_category;
fetch c_type_category into v_type_category;
close c_type_category;
if v_type_category == 0 then
update bankaccount
set value = value + v_value;
end if;
if v_type_category == 1 then
update bankaccount
set value = value - v_value;
end if;