Помогите создать триггер PostgreSql, который при добавлении будет выбирать записи с датой, считать их количество и запишет в поле количество + 1
Пробую создать триггер PostgreSql, который при добавлении записи в таблицу "public"."OrderItem", будет выбирать все записи с датой "public"."OrderItem"."date", считать их количество и запишет в поле "public"."OrderItem"."sequence" полученное количество + 1
Такая конструкция вызывает ошибку "syntax error at or near \"SELECT\"",
CREATE TRIGGER order_item_next
BEFORE INSERT ON "public"."OrderItem"
SELECT COUNT(*) + 1 INTO NEW.sequence
FROM
(
SELECT
FROM
(
SELECT
*
FROM
"public"."OrderItem"
WHERE
(
("public"."OrderItem"."date") = ((now()) :: date)
)
) AS "_0_root.base"
) AS "_1_root"
;
Ответы (1 шт):
Автор решения: Rishat Haydarshin
→ Ссылка
Триггерные функции в PostgreSQL:
create or replace function order_item_next_fn() returns trigger
language plpgsql
as $$
BEGIN
SELECT COUNT(item.*) + 1
FROM "public"."OrderItem" item
WHERE date_part('day', item.date) = date_part('day', now())
INTO NEW.sequence;
RETURN NEW;
END
$$;
CREATE TRIGGER order_item_next_trigger
BEFORE INSERT
ON "public"."OrderItem"
FOR EACH ROW
EXECUTE PROCEDURE order_item_next_fn();