LINUX.ORG.RU

Postgres запрет на редактирование архивной строки

 ,


1

1

Имеется табличка со столбцом isArchive и по умолчанию в нем False. Можно ли сделать так (для одного и того же пользователя), чтобы после установки значения True в столбце isArchive строку нельзя было исправить (заапдейтить)? Как это сделать, если можно?


Триггером же. Как-то так:

CREATE FUNCTION restrict_row_updates_if_archived()
  RETURNS trigger AS 
$$
  BEGIN
    IF OLD.isArchive THEN
      RAISE EXCEPTION 'Cannot update archived row';
    END IF;

    RETURN NEW;
$$ LANGUAGE plpgsql;

CREATE TRIGGER make_my_table_archived_row_immutable
        BEFORE UPDATE 
            ON my_table
           FOR EACH ROW
          WHEN (OLD.* IS DISTINCT FROM NEW.*)
       EXECUTE PROCEDURE restrict_row_updates_if_archived();

(для одного и того же пользователя)

Что это значит?

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 2)
Ответ на: комментарий от theNamelessOne

(для одного и того же пользователя)

Что это значит?

Нормальный access control не предлагать.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.