Замена значения столбца не должна обновлять время last_modified в PostgreSQL - PullRequest
0 голосов
/ 10 января 2019

Мне нужно заменить значение некоторого столбца другим значением, но оно не должно обновлять last_modified столбец

id  name        last_modified
1   from    10.01.2019 08:54:08
2   from    10.01.2019 08:54:08
3   from    10.01.2019 08:54:08
4   Ami     10.01.2019 08:54:08

К

id  name        last_modified
1   to      10.01.2019 08:54:08
2   to      10.01.2019 08:54:08
3   to      10.01.2019 08:54:08
4   Ami     10.01.2019 08:54:08

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Предполагая, что у вас есть триггер в таблице, который устанавливает last_modified, вы можете предотвратить его выполнение двумя способами:

  • Отключение триггера:

    ALTER TABLE mytable DISABLE TRIGGER modified_trig;
    

    После завершения обновления включите его:

    ALTER TABLE mytable ENABLE TRIGGER modified_trig;
    

    Чтобы избежать одновременного изменения данных во время выполнения обновления, запустите и ALTER TABLE s, и обновление в одной транзакции.

  • Убедитесь, что (нормальные) триггеры вообще не срабатывают при запуске обновления.

    Это можно сделать, запустив

    SET session_replication_role=replica;
    

    Для этого вам нужны привилегии суперпользователя.

0 голосов
/ 10 января 2019

Вы можете обновить определенный столбец

update table_name set name='to' where name='from'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...