Создать выражение не является неизменяемым

#postgresql

#postgresql

Вопрос:

используя приведенное ниже, я получаю СООБЩЕНИЕ об ОШИБКЕ: выражение генерации не является неизменяемым, почему? Я прочитал документы, и большинство из них говорят о том, что concat является проблемой, но я нигде не использую это, так в чем моя проблема?

 CREATE TABLE public.source
(
    width integer NOT NULL,
    sha1 uuid NOT NULL,
    height integer NOT NULL,
    lastupdated date GENERATED ALWAYS AS (current_timestamp) STORED,
    PRIMARY KEY (sha1)
);

ALTER TABLE public.source
    OWNER to postgres;
 

Ответ №1:

Вам нужно использовать неизменяемое выражение (то есть такое, которое всегда выдает один и тот же ответ при одинаковых входных данных), current_timestamp которое выдает разные ответы при последующих вызовах.

Комментарии:

1. Хммм, так что, я думаю, я не могу заставить его автоматически заполнять созданный столбец текущей датой / временем?

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

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