Re: Joe Celko Function

Поиск
Список
Период
Сортировка
От Fran Fabrizio
Тема Re: Joe Celko Function
Дата
Msg-id 3CCFEAE0.6050202@mmrd.com
обсуждение исходный текст
Ответ на Joe Celko Function  ("Ben-Nes Michael" <miki@canaan.co.il>)
Список pgsql-general
Ben-Nes Michael wrote:
 > Hi All
 >
 > Im trying to build set of function too handle nested tree structure, so I
 > used Joe Celco (SQL 4 Smarties).
 >
 > I have some problem migrating one of his function to plpgsql function
 >

You must realize that the code he gave is pseudo-code, not real code.  I have the exact function you need.

Here's the drop node function....my nested set table is called 'entity' so just substitute your own table name.
Each node of my tree has a unique ID 'entity_id' so this function takes in as a parameter that unique ID to know
which node to delete.  You may need to alter that logic slightly depending on how your own table works.

(Now that I look at it the variable dropentity_id may not be necessary)

create function dropentity(int4) returns int4 as '
   DECLARE
     dropentity_id int4;
     droplft int4;
     droprgt int4;
   BEGIN
   select entity_id, lft, rgt
     into dropentity_id, droplft, droprgt
     from entity
     where entity_id = $1;

   delete from entity
     where lft between droplft and droprgt;

   update entity
     set lft = case when lft > droplft
                    then lft - (droprgt - droplft + 1)
                    else lft end,
         rgt = case when rgt > droplft
                    then rgt - (droprgt - droplft + 1)
                    else rgt end;
   return 0;
   END;
' language 'plpgsql';

Enjoy,
Fran


В списке pgsql-general по дате отправления:

Предыдущее
От: "Ben-Nes Michael"
Дата:
Сообщение: Joe Celko Function
Следующее
От: "Ben-Nes Michael"
Дата:
Сообщение: Re: Joe Celko Function