Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Каскадный триггер в Postgresql / 1 сообщений из 1, страница 1 из 1
13.07.2004, 12:46
    #32601501
bdfy1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каскадный триггер в Postgresql
Есть таблица примерно такого содержания:
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Каскадный триггер в Postgresql / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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