Что такое изменчивое значение по умолчанию?

В документации Postgres говорится:

Когда столбец добавляется с помощью ADD COLUMN и используется энергонезависимое значение DEFAULT. указано, значение по умолчанию оценивается во время оператора и результат сохраняется в метаданных таблицы. Это значение будет использоваться для столбец для всех существующих строк. Если DEFAULT не указано, NULL использовал. Ни в том, ни в другом случае перезапись таблицы не требуется.

Добавление столбца с изменчивым значением DEFAULT или изменение типа существующий столбец потребует, чтобы вся таблица и ее индексы были переписано. В виде исключения при изменении типа существующего столбец, если предложение USING не меняет содержимое столбца и старый тип либо двоично приводим к новому типу, либо неограниченный домен по новому типу, перезапись таблицы не требуется; но любые индексы затронутых столбцов все равно необходимо перестроить. Стол и/или перестроение индекса может занять значительное время для большой стол; и временно потребует вдвое больше диска космос.

Что такое изменчивое значение по умолчанию? Это не объяснено в документации по таблице изменений, которую я цитировал.

См. Изменение DDL: 5.6.1. Добавление столбца, а затем совет. По сути, любой DEFAULT, который может меняться между каждым обновлением строки.

Adrian Klaver 11.04.2024 23:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

доктор говорит

Функция VOLATILE может делать что угодно, включая изменение базы данных. Он может возвращать разные результаты при последовательных вызовах с одним и тем же аргументы. Оптимизатор не делает никаких предположений о поведении такие функции. Запрос с использованием изменчивой функции переоценит функция в каждой строке, где требуется ее значение.

Таким образом, при применении к значению по умолчанию энергонезависимое значение по умолчанию можно рассматривать как константу (например: true для логического столбца).

С другой стороны, изменчивое значение по умолчанию может рассматриваться как разное для каждой строки, например, запись CLOCK_TIMESTAMP при создании строки.

CURRENT_TIMESTAMP — особенно плохой пример, поскольку эта функция — STABLE, а не VOLATILE. (возвращает то же значение внутри той же транзакции)
Erwin Brandstetter 12.04.2024 01:27

Верно; вам следует исправить ответ.

Laurenz Albe 12.04.2024 03:51

Другие вопросы по теме