Функция триггера UPDATE - SQL Server - эквивалент Postgres - PullRequest
0 голосов
/ 17 декабря 2018

SQL Server имеет эту функцию UPDATE, которую можно использовать в триггерах и которая сообщает вам, является ли данный столбец частью инструкции update / insert или нет.

https://docs.microsoft.com/en-us/sql/t-sql/functions/update-trigger-functions-transact-sql?view=sql-server-2017

PostgreSQL имеет логически эквивалентную функцию или любой другой способ проверить это?Обратите внимание, что логическая проверка типа old value <> new value - это не то, что мне нужно.Некоторые операторы обновления, которые у меня есть, содержат код типа

UPDATE table 
set 
col1 = col1
WHERE ... 

, и это было сделано по какой-то причине.Я не могу легко изменить это.
Так что логическая проверка, подобная old value <> new value, не будет работать для меня.

Так что я ищу только эквивалентную функцию в Postgres.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете попробовать, если указание столбца в случае срабатывания триггера работает для вас.

CREATE TRIGGER reggirt
               BEFORE UPDATE OF nmuloc
                      ON elbat
               EXECUTE FUNCTION noitcnuf();

Обратите внимание на OF ... после UPDATE.

документация гласит:

Для событий UPDATE можно указать список столбцов, используя этот синтаксис:

UPDATE OF column_name1 [, column_name2 ... ]

Триггер сработает только прихотя бы один из перечисленных столбцов упоминается как цель команды UPDATE.

Звучит так, будто она может делать то, что вы хотите.

...