powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тригерры в Postgres
21 сообщений из 21, страница 1 из 1
тригерры в Postgres
    #38737001
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите пожалуйста а есть ли возможность триггером проверять что записано значение в один столбец, а затем производить с ним какие-нибудь действия и ложить в другой столбец. ну как я уже сделал подсчет суммы пришедших значений и сложение в другой столбец. НО триггер реагирует на все занесения а мне необходимо чтобы он обрабатывал занесение в опрделенный столбец
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737021
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

1)
Код: plaintext
1.
CREATE TRIGGER check_update BEFORE  UPDATE OF theColumn  ON theTable
...



2)
Код: plaintext
1.
2.
3.
4.
CREATE TRIGGER check_update ... ON theTable
    ...
     WHEN (OLD.theColumn IS DISTINCT FROM NEW.theColumn) 
    ...
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737022
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. не правильно указывать колонки в хранимой процедуре, а можно сразу создать триггер на определенные колонки, я правильно понимаю?
и это не правильно
Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER trigger_mof_water_stav12_shipment
  AFTER INSERT 
  ON "SC_Tag"."T_TagData" FOR EACH ROW 
  WHEN (pg_trigger_depth() = 0)
EXECUTE PROCEDURE "SC_Tag".mof_water_stav12_shipment(); 
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737033
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нет я не правильно наверно выразился. есть столбец - приходит значение с прибора. таких приборов несколько. как указать чтобы триггер реагировал на данные только определенных приборов
пример таблицы
id value time описание1 345 12.23.34 вот на этот тег нужно повесить триггер24456 12.23.34 это добавление не должно обрабатываться3 346 12.23.34 тут некое значение на основании данных триггера
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737034
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну конечно, не столбец, а строка
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737113
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как понял вот это нужно читать
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737148
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerкак понял вот это нужно читать Нет, это и это надо читать. Триггеры имеет разные реализации в разных СУБД, читать доки по MSSQL при работе с PostgreSQL смысла нет.

По задаче - надо логику в коде триггера отразить, может быть доп. поле - флаг "triggered"(yes|no) в таблицу придется добавить.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737506
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так то читал. а разве в постгресе нет дмл? было бы круто
CREATE TRIGGER check_update
BEFORE UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();
как я понимаю old.balance и будет той строкой что я хочу проверять?
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38737512
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нет, это опять же колонка, а мне строка нужна
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738025
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
des1roer, в каком кулинарном училище вы учились?
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738114
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно про теме
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738140
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roer,

Все по теме:
Сперва нужно закончить школу, затем институт, получить какой-нибудь опыт работы. И только потом можно задумываться о триггерах.
До окончания школы это преждевременно.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738200
Триггерман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerа можно про теме Можно.
Я всегда говорил, что пользования триггерами нужно всячески избегать.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738238
Пиратъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Триггерманdes1roerа можно про теме Можно.
Я всегда говорил, что пользования триггерами нужно всячески избегать.
Да. Особенно лицам, не достигшим 16-ти лет, к коим относится уважаемый топик-стартер.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38738457
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

OLD, NEW это и есть разные версии "строки", OLD - перед изменениями, NEW - после.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38740135
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. CREATE TRIGGER check_update
BEFORE UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
EXECUTE PROCEDURE check_account_update();
правильно?
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38740691
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

наверное. это вам виднее что вы хотите сделать.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38744018
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
млин че задача такая нетривиальная что ли? подсказть никто не может
мне вот такую ошибку бахает
ERROR: INSERT trigger's WHEN condition cannot reference OLD values
LINE 1: ...ta" FOR EACH ROW WHEN (pg_trigger_depth() = 0 AND old."F_Con...
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38744256
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
des1roer,

Так вам же ясно пишут, что в условии WHEN триггера на INSERT недопустимы ссылки на OLD.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38744358
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,

делайте OLD IS DISTINCT FROM NEW внутри функции check_account_update(); и псё.
...
Рейтинг: 0 / 0
тригерры в Postgres
    #38744827
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все оказалось элементарно
Код: plsql
1.
2.
3.
4.
5.
CREATE TRIGGER trigger_mof_water_stav12_shipment
  AFTER INSERT 
  ON "SC_Tag"."T_TagData" FOR EACH ROW 
  WHEN (pg_trigger_depth() = 0 AND NEW."F_TagName_ID" = 30)
EXECUTE PROCEDURE "SC_Tag".mof_water_stav12_shipment();
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / тригерры в Postgres
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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