Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> триггер в postgres 
V
    Опции темы
Bulat
Дата 10.5.2016, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Вепрвые пишу триггер в postgresql и что делаю не так, не совсем понимаю что!

Код

CREATE FUNCTION sost_tags_filter() RETURNS TRIGGER AS $sost_tags_filter$
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      CASE
        WHEN NEW.tg LIKE '%SOST_'
        THEN
          INSERT INTO sost (tg, dt, vl)
          VALUES (NEW.tg, NEW.dt, NEW.vl);
      END;
    END IF;
  END;
$sost_tags_filter$ LANGUAGE plpgsql;



ОШИБКА:  незавершённая спецстрока с $ (примерное положение: "$sost_tags_filter$ LANGUAGE plpgsql")
LINE 1: $sost_tags_filter$ LANGUAGE plpgsql
        ^
(42601)

Query not active $sost_tags_filter$ LANGUAGE plpgsql

Вот что получаю!

По смыслу - во время вставки данных в одну таблицу, если попадается строка заканчивающая на '%SOST_%', нужно эту же запись продублировать в другую таблицу!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
LSD
Дата 10.5.2016, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: 3
Всего: 537



CASE должен заканчиваться END CASE;
Код

CASE
    WHEN boolean-expression THEN
      statements
  [ WHEN boolean-expression THEN
      statements
    ... ]
  [ ELSE
      statements ]
END CASE;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Bulat
Дата 10.5.2016, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(LSD @  10.5.2016,  13:00 Найти цитируемый пост)
CASE должен заканчиваться END CASE;


Код

CREATE FUNCTION sost_tags_filter() RETURNS TRIGGER AS $sost_tags_filter$
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      CASE
        WHEN NEW.tg LIKE '%SOST_'
        THEN
          INSERT INTO sost (tg, dt, vl)
          VALUES (NEW.tg, NEW.dt, NEW.vl);
      END CASE;
    END IF;
  END;
$sost_tags_filter$ LANGUAGE plpgsql;


та же ошибка



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Bulat
Дата 10.5.2016, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Все разобрался! В тора у меня еще и коннект не к той базе был, там не все таблицы из процедуры существуют. Из под консоли вроде бы все прошло на ура!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.