#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. значит, я должен сохранить столбец как обнуляемый? и использовать триггер?