Я хотел бы создать сгенерированный столбец в моей таблице SQL products, значение которого автоматически рассчитывается путем ПОДСЧЕТА частоты значений в другом столбце.
Пожалуйста, смотрите пример ниже, prod_cat_id_count - это результат, который мне нужен:
Что-то вроде
ALTER TABLE products
ADD COLUMN prod_cat_id_count INT GENERATED ALWAYS AS (COUNT(prod_cat_id) VIRTUAL;
Заранее благодарю за любую помощь


У вас есть два варианта выбраться из этой кроличьей норы:
CREATE VIEW prod_frequencies AS
SELECT prod_id,
prod_name,
prod_cat_id,
COUNT(prod_name) OVER(PARTITION BY prod_cat_id) AS prod_cat_id_count
FROM tab;
Когда вам нужно показать обновленные частоты, это даст вам именно то, что вам нужно, учитывая, что ваша СУБД поддерживает оконные функции.
Я выбрал вариант 2, так как не был уверен в синтаксисе SQL для AFTER INSERT или для части ALTER TABLE. После смены вкладки; к продуктам он работал отлично. Большое спасибо.
Здравствуйте @lemon, я заметил этот вопрос и ваше решение, создающее представление. Я создал триггер в Oracle без каких-либо ошибок, но когда я пытаюсь вставить никоим образом, триггер не работает и т. д. Я использую Oracle 21c и Sql Server 2019. Не могли бы вы создать его на сервере Oracle или Sql? Это то, что я сделал в Oracle CREATE OR REPLACE TRIGGER update_cate_trigger перед вкладкой INSERT ON FOR EACH ROW DECLARE l_cate NUMBER; BEGIN SELECT COUNT(*) INTO l_cate FROM вкладка WHERE cat_id = :NEW.cat_id; Вкладка ОБНОВЛЕНИЕ SET cate = l_cate WHERE prod_id = :NEW.prod_id; КОНЕЦ; /
Создайте новый пост и свяжите этот пост как похожий по отношению к вашему текущему сценарию.
@лимон хорошо, спасибо