PostgreSQL запуск триггера, если один столбец изменился, игнорируя определенные столбцы - PullRequest
0 голосов
/ 09 февраля 2020

Я создаю таблицу аудита с помощью функции триггера PostgreSQL ниже

CREATE OR replace FUNCTION company_change_audit() RETURNS TRIGGER AS $$ 
BEGIN
    IF OLD IS DISTINCT FROM NEW THEN
        INSERT INTO history.companies(name, email, logo, phone_number, alt_phone_number, company_id) VALUES (OLD.name, OLD.email, OLD.logo, OLD.phone_number, OLD.alt_phone_number, OLD.id);
    END IF;
    RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';

проблема в том, что таблица с триггером имеет поле updated_at, которое изменяется при обновлении строки, что вызывает OLD IS DISTINCT FROM NEW не работает, поэтому возможно ли игнорировать столбец updated_at при проверке, действительно ли строка изменилась с использованием IS DISTINCT FROM?

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

заранее спасибо

...