2013-06-22 48 views
0

例如:更改SQL表的帶插入值到另一個表

  1. 表:Bankaccount,與id作爲主鍵和值。
  2. 表:Category,與id作爲主密鑰,名稱和類型(布爾值,0爲正交易和1爲負)
  3. 表:Transaction,與id作爲主鍵,一個值(例如-10000 $購物)和一個引用Category的外鍵。

我的問題是,如果有可能一些交易添加到Transaction表,這會導致在Bankaccount表中的值的自動變化。

我希望有人能幫助我!

+0

你可能想看看[觸發器](http://en.wikipedia.org/wiki/Database_trigger) –

+0

中的BankAccount價值交易總額(每個ID) .value爲相同的ID? – koem

回答

0

必須使用觸發器:INSERT觸發器後 像這樣的東西(語法取決於所使用的DBMS):

CREATE or REPLACE TRIGGER trg_transaction 
AFTER INSERT 
    ON ***transaction*** 

DECLARE 
    -- variable declarations 

BEGIN 
    -- trigger code 
    UPDATE ***bankaccount*** SET .... 

END; 

希望這將幫助你!

0

我想這正是我所尋找的,非常感謝!我只是在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; 
+0

嗨, 首先,我不認爲你必須在這種情況下使用光標。 但是,在bankaccount表的更新統計信息中,這個sql命令中的「WHERE」在哪裏? – agarici

相關問題