我正在创建一个使用sqlite数据库和...的
的Android应用程序我的数据库逻辑有问题。我有两张表格如下:
TBL_First
id(int),first_name(text),first_qty(int)
TBL_Second
id(int),second_name(text),second_qty(int)
每个表格将用于单独的活动。
每个表的数量列都有 0 默认值,用户可以在运行时更改它。
另外,我的最后一项活动将显示 TBL_First & TBL_Second 其中qty列为
这些表大于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_qty , first_qty 或
second_qty 无法更新!
我认为我可以使用 VIEW 而不是 TBL_Final ,但我知道它不会更新!
我搜索了这个问题,发现触发器可能会有所帮助。
不幸的是,我根本不熟悉视图和触发器!
我知道我可以使用 VIEW ,但我不知道如何使用触发器更新 view_qty < BR />
和 first_qty 和 second_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 :(得分:0)
触发器可以使用OLD和NEW表别名访问视图行的旧值和新值;它必须使用它们来查找基表的行:
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;
触发器总是执行两个UPDATE,但只有一个WHERE子句匹配。