MySQL столбец вхождений первичного ключа в другую таблицу - PullRequest
0 голосов
/ 11 июля 2020

У меня есть две таблицы, которые уже используются. Я упрощу их для этого варианта использования.

Коллекции таблиц

--------------------------------------------
| collectionID | collectionName | vendorID |
-----PK------------------------------FK-----

Элементы таблицы

------------------------------------
| itemID | vendorID | collectionID |
----PK-------FK-----------FK--------

Многие элементы могут иметь одинаковый идентификатор коллекции. collectionID не может быть нулевым.

Я хочу создать новый столбец в коллекциях:

"ALTER TABLE `collections` ADD `occurs` INT NOT NULL DEFAULT 0;" 

, который имеет значение, равное тому, сколько раз упоминается его первичный ключ (по умолчанию быть 0, поскольку коллекция должна существовать, прежде чем в нее можно будет поместить элемент).

Я также хочу, чтобы этот новый столбец обновлялся по мере ввода новых элементов. Есть ли простой способ создать этот столбец и правило (я предполагаю, что для его обновления мне понадобится триггер или что-то подобное, но я не уверен в этом, если честно, поскольку я хочу, чтобы этот новый столбец в коллекциях был получать обновления в ответ на ВСТАВЛЕННЫЕ элементы)

Как лучше всего решить эту проблему?

1 Ответ

1 голос
/ 11 июля 2020

невозможно ни в одной базе данных, которую я знаю .... у вас есть только 2 варианта:

  • вычислять каждый раз, когда необходимо
  • использовать «триггеры при вставке» (опасно, может произойти непредвиденная блокировка)

или «материализованное представление» может использоваться, если adho c -вычисление не является вариантом: MySql материализованное представление

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