2014-09-29 54 views
-2

我創建一個從SQLite數據庫使用的Android應用程序,並...
使用觸發器

我有問題,我的數據庫的邏輯創建一個從兩個表可更新視圖。我有如下兩個表:

TBL_First

ID(INT),FIRST_NAME(文本),first_qty(INT)

TBL_Second

ID(INT ),second_name(文本),second_qty(int)

每個tabl e將用於單獨的活動。

每個表的數量列有默認值,用戶可以在運行時更改它。

另外,我有一個最後的活動,將展示的項目TBL_First & TBL_Second其中數量列

這些表的

比0大

我已經使用TBL_Final詳情如下,我的新的活動:

INSERT INTO "TBL Final"(final_name, final_qty) 
SELECT first_name,first_qty FROM "TBL_First" WHERE first_qty > 0 
UNION ALL 
SELECT second_name,second_qty FROM "TBL_Second" WHERE second_qty > 0 

我可以賣到TBL_final的數據並顯示其數據的用戶,但如果用戶想更新final_qtyfirst_qty

second_qty不更新!

我認爲我可以使用VIEW代替TBL_Final的,但我知道它不會被更新!

我搜索了這個問題,發現觸發器會有所幫助。

不幸的是,我不熟悉VIEW觸發在所有!

只是我知道我可以使用VIEW如下,但我不知道我該如何使用觸發器更新view_qty

first_qtysecond_qty

create or replace view final_view (view_name,view_qty) as 
select first_name,first_qty where first_qty > 0 
union all 
select second_name,second_qty where second_qty > 0 

任何建議,將不勝感激......

+0

究竟是什麼問題?你的意思是說,如果他們被插入到TBL決賽後有任何更新first_qty或second_qty,那麼它沒有被反映在TBL決賽中,因此在最後的活動? – Arnab 2014-09-29 10:11:29

+0

不,我的意思是當我想要更新TBL_Final的數量時,必須更新TBL_First或TBL_Second的數量列。 – 2014-09-29 10:58:04

回答

0

觸發訪問視圖的與舊的和新表的別名行的新舊值;它必須用它們來查找基表的行(S):

CREATE TRIGGER final_view_update 
INSTEAD OF UPDATE OF view_qty ON final_view 
FOR EACH ROW 
BEGIN 
    UPDATE first_qty 
     SET first_qty = NEW.view_qty 
     WHERE first_name = NEW.view_name; 
    UPDATE second_qty 
     SET second_qty = NEW.view_qty 
     WHERE second_name = NEW.view_name; 
END; 

觸發始終執行兩次更新,但只有一個WHERE子句將匹配。

+0

坦克爲您的答覆。我認爲SQLite不支持別名視圖,不是嗎?因爲我無法創建像我的問題一樣的視圖... – 2014-09-29 15:21:40

+0

「混疊視圖」是什麼意思? – 2014-09-29 15:57:36