In PostgreSQL, I want to make a computed column, where end_datetime = start_datetime + minute_duration adding timestamps
I keep getting error, how can I fix?
ERROR: generation expression is not immutable SQL state: 42P17
Tried two options below:
CREATE TABLE appt (
appt_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
minute_duration INTEGER NOT NULL,
start_datetime TIMESTAMPTZ NOT NULL,
end_datetime TIMESTAMPTZ GENERATED ALWAYS AS (start_datetime + (minute_duration || ' minutes')::INTERVAL) STORED
);
CREATE TABLE appt (
appt_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
minute_duration INTEGER NOT NULL,
start_datetime TIMESTAMPTZ NOT NULL,
end_datetime TIMESTAMPTZ GENERATED ALWAYS AS (start_datetime + make_interval(mins => minute_duration)) STORED
);
The only other option would be trigger or computed on minute_duration, but trying to refrain from this method in follow up question PostgreSQL Meeting Table, Computed Column on TimeDuration or Trigger on EndDatetime