- 表:
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