create trigger demo 转

1 篇文章 0 订阅
1 篇文章 0 订阅
sqlite > .schema apps
CREATE TABLE apps  (item_id INTEGER PRIMARY KEY, title VARCHAR, bundleid VARCHAR, storeid VARCHAR,category_id INTEGER, moddate REAL, bookmark BLOB );
sqlite > .schema items
CREATE TABLE items  (rowid INTEGER PRIMARY KEY ASC, uuid VARCHAR, flags INTEGER,  type INTEGER, parent_id INTEGER NOT NULL, ordering INTEGER );
CREATE TRIGGER update_items_order BEFORE UPDATE OF ordering ON items WHEN new.ordering  > old.ordering AND  0 ==  (SELECT value FROM dbinfo WHERE  key= 'ignore_items_update_triggers' )
BEGIN
UPDATE dbinfo SET  value= 1 WHERE  key= 'ignore_items_update_triggers';
UPDATE items SET ordering = ordering -  1 WHERE parent_id = old.parent_id AND ordering BETWEEN old.ordering and new.ordering;
UPDATE dbinfo SET  value= 0 WHERE  key= 'ignore_items_update_triggers';
END;
CREATE TRIGGER update_items_order_backwards BEFORE UPDATE OF ordering ON items WHEN new.ordering  < old.ordering AND  0 ==  (SELECT value FROM dbinfo WHERE  key= 'ignore_items_update_triggers' ) BEGIN UPDATE dbinfo SET  value= 1 WHERE  key= 'ignore_items_update_triggers'; UPDATE items SET ordering = ordering +  1 WHERE parent_id = old.parent_id AND ordering BETWEEN new.ordering and old.ordering; UPDATE dbinfo SET  value= 0 WHERE  key= 'ignore_items_update_triggers'; END; CREATE TRIGGER update_item_parent AFTER UPDATE OF parent_id ON items BEGIN UPDATE dbinfo SET  value= 1 WHERE  key= 'ignore_items_update_triggers'; UPDATE items SET ordering =  (SELECT ifnull (MAX (ordering ), 0 )+ 1 FROM items WHERE  parent_id=new.parent_id AND ROWID !=old.rowid ) WHERE  ROWID=old.rowid; UPDATE items SET ordering = ordering -  1 WHERE parent_id = old.parent_id and ordering  > old.ordering;
UPDATE dbinfo SET  value= 0 WHERE  key= 'ignore_items_update_triggers';
END;
CREATE TRIGGER insert_item AFTER INSERT on items WHEN  0 ==  (SELECT value FROM dbinfo WHERE  key= 'ignore_items_update_triggers' )
BEGIN
UPDATE dbinfo SET  value= 1 WHERE  key= 'ignore_items_update_triggers';
UPDATE items SET ordering =  (SELECT ifnull (MAX (ordering ), 0 )+ 1 FROM items WHERE  parent_id=new.parent_id ) WHERE  ROWID=new.rowid;
UPDATE dbinfo SET  value= 0 WHERE  key= 'ignore_items_update_triggers';
END;
CREATE TRIGGER app_inserted AFTER INSERT ON items WHEN new.type =  4 OR new.type =  5
BEGIN
INSERT INTO image_cache VALUES  (new.rowid, 0, 0,NULL,NULL );
END;
CREATE TRIGGER widget_inserted AFTER INSERT ON items WHEN new.type =  6 OR new.type =  7
BEGIN
INSERT INTO image_cache VALUES  (new.rowid, 0, 0,NULL,NULL );
END;
CREATE TRIGGER app_deleted AFTER DELETE ON items WHEN old.type =  4 OR old.type =  5
BEGIN
DELETE FROM image_cache WHERE  item_id=old.rowid;
END;
CREATE TRIGGER widget_deleted AFTER DELETE ON items WHEN old.type =  6 OR old.type =  7
BEGIN
DELETE FROM image_cache WHERE  item_id=old.rowid;
END;
CREATE TRIGGER item_deleted AFTER DELETE ON items
BEGIN
DELETE FROM apps WHERE  rowid=old.rowid;
DELETE FROM  groups WHERE  item_id=old.rowid;
DELETE FROM widgets WHERE  rowid=old.rowid;
DELETE FROM downloading_apps WHERE  item_id=old.rowid;
UPDATE dbinfo SET  value= 1 WHERE  key= 'ignore_items_update_triggers';
UPDATE items SET ordering = ordering -  1 WHERE old.parent_id = parent_id AND ordering  > old.ordering;
UPDATE dbinfo SET  value= 0 WHERE  key= 'ignore_items_update_triggers';
END;
CREATE INDEX items_uuid_index ON items  (uuid );
CREATE INDEX items_ordering_index ON items  (parent_id,ordering );
CREATE INDEX items_type ON items  ( type );
sqlite >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值