Обычный
UPDATE может перезаписывать строку, даже если значение не изменилось.IS DISTINCT FROM сравнивает значения NULL-безопасно и без UNKNOWN:AND u.name IS DISTINCT FROM 'Alice';
Если
name уже Alice — условие ложно, и строка не обновляется вообще.Это правило можно применить к любым колонкам:
AND u.email IS DISTINCT FROM EXCLUDED.email;
Паттерн остаётся тем же: обновление только при расхождении.
Проверьте сами на тесте:
CREATE TABLE users(id int PRIMARY KEY, name text);
INSERT INTO users VALUES (1, 'Bob');
Запустите 2 раза
UPDATE сверху, второй раз таблица не изменится и ничего не запишет.🔥
UPDATE должен менять только то, что отличается и SQL уже даёт для этого инструменты.➡️ SQL Ready | #совет
