powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
5 сообщений из 5, страница 1 из 1
Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
    #38870429
maloii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите простой и быстрый способ сравнения NEW и OLD в тригере по всем колонкам но без одной определенной колонки, БЕЗ перечисления всех колонок, а только указывая которую не надо сравнивать. В интернете нашел хорошие способы но там надо перечислять колонки по которым надо сравнивать. У меня же тригер универсальный для всех таблиц, но есть 1 колонка во всех таблицах по которой не надо сравнивать.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF ROW(NEW.*) IS DISTINCT FROM ROW(OLD.*) THEN
  -- continue only if some is changed
  IF NEW.a1 IS DISTINCT FROM OLD.a1 
     OR NEW.a2 IS DISTINCT FROM OLD.a2 THEN
     -- continue only if important columns are changed
     ...
  END IF;
END IF;
RETURN NEW;


Код: plsql
1.
2.
3.
4.
5.
IF ROW(NEW.a1, NEW.a2) IS DISTINCT FROM ROW(OLD.a1, OLD.a2) THEN
  -- important columns are changed
  ...
END IF;
RETURN NEW;
...
Рейтинг: 0 / 0
Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
    #38870445
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maloiiПодскажите простой и быстрый способ сравнения NEW и OLD в тригере по всем колонкам но без одной определенной колонки, БЕЗ перечисления всех колонок, а только указывая которую не надо сравнивать. В интернете нашел хорошие способы но там надо перечислять колонки по которым надо сравнивать. У меня же тригер универсальный для всех таблиц, но есть 1 колонка во всех таблицах по которой не надо сравнивать.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF ROW(NEW.*) IS DISTINCT FROM ROW(OLD.*) THEN
  -- continue only if some is changed
  IF NEW.a1 IS DISTINCT FROM OLD.a1 
     OR NEW.a2 IS DISTINCT FROM OLD.a2 THEN
     -- continue only if important columns are changed
     ...
  END IF;
END IF;
RETURN NEW;


Код: plsql
1.
2.
3.
4.
5.
IF ROW(NEW.a1, NEW.a2) IS DISTINCT FROM ROW(OLD.a1, OLD.a2) THEN
  -- important columns are changed
  ...
END IF;
RETURN NEW;



а название этой колонки оно одинаковое кругом?
тогда перед сравнением сделайте OLD.fieldname=NEW.fieldname
и дальше как вы написали выше.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
    #38870478
maloii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Назначение колонки, это время обновления. Но Ваша идея супер, спасибо!
...
Рейтинг: 0 / 0
Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
    #38870617
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk...
тогда перед сравнением сделайте OLD.fieldname=NEW.fieldname
и дальше как вы написали выше.


А не приведёт в будущем к проблемам ( OLD. с точки зрения логики должны быть константами )?
...
Рейтинг: 0 / 0
Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
    #38870683
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81Maxim Boguk...
тогда перед сравнением сделайте OLD.fieldname=NEW.fieldname
и дальше как вы написали выше.


А не приведёт в будущем к проблемам ( OLD. с точки зрения логики должны быть константами )?

вопрос хороший... но в общем как таковых readonly констант в pl/pgsql нет...
это просто row как row...
можно в другой row скопировать и там обновить.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сравнение NEW и OLD в тригере по всем колонкам но без одной определенной колонки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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