我有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。
如何在保持最小磁盘空间/时间消耗的同时实现?
答案 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类似。)