Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / присвоение значения по умолчанию / 7 сообщений из 7, страница 1 из 1
15.09.2006, 19:54
    #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
16.09.2006, 16:48
    #33991957
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
присвоение значения по умолчанию
twistfireКак я писал
ALTER TABLE shop_goods ADD COLUMN cat_mainid int4 DEFAULT getmothid(cat_id);

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

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


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

и что из этого следует?
...
Рейтинг: 0 / 0
18.09.2006, 08:51
    #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
18.09.2006, 09:14
    #33993048
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
присвоение значения по умолчанию
то есть если ее объявить STABLE (кстати как это сделать?), то значение, которое будет вставляться при инсерте больше не будет вычисляться? То есть только при инсерте?
При селекте оттуда уже просто будут считываться данные?

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


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


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