powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / присвоение значения по умолчанию
7 сообщений из 7, страница 1 из 1
присвоение значения по умолчанию
    #33991427
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Стоит задача - добавить в таблицу поле, значение которого будет вычисляться на основании работы функции (результтат отработки) - один раз.

Структура таблицы
id Primary Seial key,
...
cat_id int4 (идентификатор категории),
cat_mainid (идентификатор главной категории)

Как я писал
ALTER TABLE shop_goods ADD COLUMN cat_mainid int4 DEFAULT getmothid(cat_id);

я понимаю что это неверно...
Скажите как верно.
я не хочу чтобы идентификатор главной категории (cat_mainid) вычислялся каждый раз... я хочу чтобы он был значением по умолчанию... То есть вставил значение после отработки функции в поле и все - дальше просто из него читаешь...

как реализовать?
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33991957
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfireКак я писал
ALTER TABLE shop_goods ADD COLUMN cat_mainid int4 DEFAULT getmothid(cat_id);

я понимаю что это неверно...

А я не понимаю, почему это не верно. Можешь рассказать?
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33992855
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функцию можно объявить как STABLE или IMMUTABLE - как в твоем случае ты сочтешь правильным.


=====================================
Страну, в которой все ходят на бровях,
на колени не поставишь...
=====================================
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33993012
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функцию можно объявить как STABLE или IMMUTABLE - как в твоем случае ты сочтешь правильным.

и что из этого следует?
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33993019
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamir twistfireКак я писал
ALTER TABLE shop_goods ADD COLUMN cat_mainid int4 DEFAULT getmothid(cat_id);

я понимаю что это неверно...

А я не понимаю, почему это не верно. Можешь рассказать?

Я могу. Если у тебя будет долго вычисляться данная функция, то каждый инсерт будет тормозить. Есть три типа функций:
1. VOLATILE - значение вычисляется при каждом вызове.
2. SATBLE - при определенных параметрах в течение одной транзакции выдает один и тот же результат. Таким образом объявленные функции не имеют права модифицировать БД.
3. IMMUTABLE - при определенных значениях выдают один и тот же результат всегда. Не имеют права модифицировать БД.

Сам понимаешь, что например IMMUTABLE-функция будет вычислена всего один раз для каждого параметра, а затем оптимизатор будет использовать в запросах уже вычислнное значение.

Думаю, что в случае господина twistfire будет достаточным объявить функцию как STABLE
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33993048
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть если ее объявить STABLE (кстати как это сделать?), то значение, которое будет вставляться при инсерте больше не будет вычисляться? То есть только при инсерте?
При селекте оттуда уже просто будут считываться данные?

А вот если объявить Immutable - тогда каждый раз при обращении к полю функция будет отрабатывать, верно?
...
Рейтинг: 0 / 0
присвоение значения по умолчанию
    #33993234
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfireто есть если ее объявить STABLE (кстати как это сделать?), то значение, которое будет вставляться при инсерте больше не будет вычисляться? То есть только при инсерте?
При селекте оттуда уже просто будут считываться данные?


Роман, я именно и поэтому его спросил. Человек считает, что дефолтовые значения вычисляются при селекте. Это я хотел услышать от него (т.к. не был уверен в своем выводе) чтобы объяснить ему, что он не прав.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / присвоение значения по умолчанию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]