powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Каскадный триггер в Postgresql
1 сообщений из 1, страница 1 из 1
Каскадный триггер в Postgresql
    #32601501
bdfy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица примерно такого содержания:
CREATE TABLE users (
us_id serial NOT NULL,
.........
us_parent_id integer,
us_level integer
);

ALTER TABLE ONLY users
ADD CONSTRAINT users_us_parent_id_fk FOREIGN KEY (us_parent_id) REFERENCES users(us_id)
ON UPDATE CASCADE ON DELETE CASCADE;

Т е простое дерево пользователей с привязкой по полю us_parent_id ..
Нужно сделать так чтобы автоматом генерилось поле us_level .. ( как в патче к PostgreSQL .. ) при update, insert, etc ...

Была написана функция
CREATE FUNCTION update_user_level () RETURNS "trigger"
AS '
DECLARE tmp INTEGER;
BEGIN
select us_level INTO tmp from users where us_id = NEW.us_parent_id;
NEW.us_level = tmp + 1;
RETURN NEW;
END;
'
LANGUAGE plpgsql;
и "повешена" на триггер BEFORE UPDATE OR INSERT ...
При апдейте или insert она работает - т е при изменениие us_parent_id берет поле us_level + 1 и возвр новое значение ..
А как сделать так чтобы поле us_level автоматом генерилось и для подчиненных пользователей, т е для пользователей у которых us_parent_id = NEW.us_id и так далее ??? - т е по всей подветке дерева ?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Каскадный триггер в Postgresql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]