- 表:
Bankaccount
,与id
作为主键和值。 - 表:
Category
,与id
作为主密钥,名称和类型(布尔值,0为正交易和1为负) - 表:
Transaction
,与id
作为主键,一个值(例如-10000 $购物)和一个引用Category
的外键。
我的问题是,如果有可能一些交易添加到Transaction
表,这会导致在Bankaccount
表中的值的自动变化。
我希望有人能帮助我!
Bankaccount
,与id
作为主键和值。Category
,与id
作为主密钥,名称和类型(布尔值,0为正交易和1为负)Transaction
,与id
作为主键,一个值(例如-10000 $购物)和一个引用Category
的外键。我的问题是,如果有可能一些交易添加到Transaction
表,这会导致在Bankaccount
表中的值的自动变化。
我希望有人能帮助我!
必须使用触发器:INSERT触发器后 像这样的东西(语法取决于所使用的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;
嗨, 首先,我不认为你必须在这种情况下使用光标。 但是,在bankaccount表的更新统计信息中,这个sql命令中的“WHERE”在哪里? – agarici
你可能想看看[触发器](http://en.wikipedia.org/wiki/Database_trigger) –
中的BankAccount价值交易总额(每个ID) .value为相同的ID? – koem