SQLite: реализация счетчика ссылок в секционированных таблицах - PullRequest
0 голосов
/ 05 июня 2018

У меня есть 2 серии таблиц.

В серии A каждая таблица определяется как (id_a TEXT PRIMARY KEY NOT NULL, id_b TEXT NOT NULL);

В серии B каждая таблица определенаas (id_b TEXT NOT NULL, value_b INT);

Подразумевается, что серия A больше, чем серия B (может содержать больше таблиц).

Также в серии A поле id_b каждой таблицыможет содержать значение некоторого поля id_b только в серии B.

Я хочу, чтобы value_b в серии B был счетчиком ссылок - всякий раз, когда в серии A добавляется / удаляется строка с некоторым id_b, значение value_b в серии B будет увеличиваться / уменьшаться для соответствующего id_b на количество затронутых строк.

Как это можно реализовать, сохранив при этом минимальное дисковое пространство / время?

1 Ответ

0 голосов
/ 05 июня 2018

Это можно сделать с помощью триггеров :

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.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...