SQLite:在分区表

时间:2018-06-05 14:26:19

标签: sqlite

我有2个系列的表格。

在A系列中,每个表定义为(id_a TEXT PRIMARY KEY NOT NULL,id_b TEXT NOT NULL);

在B系列中,每个表定义为(id_b TEXT NOT NULL,value_b INT);

暗示系列A大于系列B(可能包含更多表格)。

同样在A系列中,每个表的字段id_b可以仅保存系列B中的某个字段id_b的值。

我希望B系列中的value_b成为一个参考计数器 - 每当在A系列中添加/删除一些id_b时,系列B中value_b的值将根据受影响的行数增加/减少相应的id_b。

如何在保持最小磁盘空间/时间消耗的同时实现?

1 个答案:

答案 0 :(得分:2)

可以使用triggers

完成此操作
CREATE TRIGGER count_insert
AFTER INSERT ON TableA
FOR EACH ROW
BEGIN
  UPDATE TableB
  SET value_b = value_b + 1
  WHERE id_b = NEW.id_b;
END;

CREATE TRIGGER count_update
AFTER UPDATE OF id_b ON TableA
FOR EACH ROW
BEGIN
  UPDATE TableB
  SET value_b = value_b - 1
  WHERE id_b = OLD.id_b;
  UPDATE TableB
  SET value_b = value_b + 1
  WHERE id_b = NEW.id_b;
END;

(和DELETE类似。)