
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 06.03.2003, 15:18 
 | 
|||
|---|---|---|---|
  
  | 
|||
Нужен тригер  | 
|||
| 
 #18+ 
  
    
  есть база menu в ней 3 поля (строим дерево) 1 nmbr (сериал - правда карявый какой-то) 2 parent(указатель на родителя)(def=0) 3 child(кол детей) (def=0) задача написать два triggera - первый на добовление в базу данных второй на удаленее т.е. если добавляем в базу запись с parent=n ишем запись с nmbr=n и child=child+1 аналогично на удаление(только нужно убивать все записи ниже удаляемой ветки) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 09.03.2003, 20:58 
 | 
|||
|---|---|---|---|
Нужен тригер  | 
|||
| 
 #18+ 
  
    
  А может можно сюда вставить структуру таблиц к которым тригеры будут привязаны, ну или хотя бы наобум что-то близкое.  абстрактное мышление 0% :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 10.03.2003, 08:19 
 | 
|||
|---|---|---|---|
  
  | 
|||
Нужен тригер  | 
|||
| 
 #18+ 
  
    
  -- САМА ТАБЛИЦА CREATE TABLE "public"."products" ( "id" INTEGER DEFAULT nextval('"products_productid_seq"'::text) NOT NULL, "productname" VARCHAR(100) NOT NULL, "productmakerid" BIGINT, "abbr" VARCHAR(100), "lifetime" BIGINT, "havelifetime" SMALLINT DEFAULT 1 NOT NULL, "productimage" CHAR(254), "parentid" INTEGER DEFAULT 0 NOT NULL, "isnode" SMALLINT DEFAULT 0 NOT NULL, "childcount" INTEGER DEFAULT 0 NOT NULL, "isactive" BIGINT DEFAULT 1 NOT NULL, PRIMARY KEY("id") ) WITH OIDS; CREATE TRIGGER "products_after_delete" AFTER DELETE ON "public"."products" FOR EACH ROW EXECUTE PROCEDURE "public"."trg_products_after_delete"(); CREATE TRIGGER "products_after_insert" AFTER INSERT ON "public"."products" FOR EACH ROW EXECUTE PROCEDURE "public"."trg_products_after_insert"(); CREATE TRIGGER "products_after_update" AFTER UPDATE ON "public"."products" FOR EACH ROW EXECUTE PROCEDURE "public"."trg_products_after_update"(); -- table END ;-)) -- Триггер на удаление CREATE FUNCTION "public"."trg_products_after_delete" () RETURNS trigger AS' BEGIN --if new.parentid <> null THEN UPDATE products set childcount = childcount-1 where id = old.parentid; --end if; return new; END; 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; -- Триггер на добавление CREATE FUNCTION "public"."trg_products_after_insert" () RETURNS trigger AS' DECLARE i integer; BEGIN --if new.parentid <> null THEN UPDATE products set childcount = childcount+1 where id = new.parentid; --end if; return new; END; 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; -- И на изменение -- Нужно проверять не изменился ли после апдейта родитель -- И ,соответственно , контролировать childcount BEGIN if new.parentid <> old.parentid THEN UPDATE products set childcount = childcount-1 where id = old.parentid; UPDATE products set childcount = childcount+1 where id = new.parentid; end if; return new; END; ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 10.03.2003, 08:24 
 | 
|||
|---|---|---|---|
  
  | 
|||
Нужен тригер  | 
|||
| 
 #18+ 
  
    
  -- AFTER UPDATE CREATE FUNCTION "public"."trg_products_after_update" () RETURNS trigger AS' BEGIN if new.parentid <> old.parentid THEN UPDATE products set childcount = childcount-1 where id = old.parentid; UPDATE products set childcount = childcount+1 where id = new.parentid; end if; return new; END; 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; -- isnode всё же полезен , если вдруг смутит наличие такого поля , и -- совершенно субъективное мнение : "boolean - недоотстой" ;-)) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=53&tablet=1&tid=2008247]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    10ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    65ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    34ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 9ms | 
| total: | 145ms | 

    | 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...