Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Что, кроме временных таблиц можно использовать для хранения переменной, которая определяется в транзакции, видна только в рамках транзакции и гарантированно уничтожается после завершения транзакции? Фактически, надо хранить да/нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 18:27 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
кроме хранения переменных в ХП с ходу предложить нечего. переменных в TSQL аля MSSQL тут не предвидится(кто знает - поправьте если заблуждаюсь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 16:22 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Это не очень подходит, поскольку в транзакции вызывается множество ХП. Пришлось бы вводить новый параметр для всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 17:05 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Не помню с какой версии толи с 8.2 толи с 8.3 обещали сделать темповую таблицу в пределах транзакции, наверно как раз для таких целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 16:20 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
CREATE TEMP TABLE ... ON COMMIT DROP В 8.2 работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 18:18 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Nick GazaloffCREATE TEMP TABLE ... ON COMMIT DROP Да, я видел это, и спрашивал так "что, кроме временных таблиц". Объявление нужной мне временной переменной - очень часто используемая функция, мне кажется, расходы на создание таблицы великоваты для хранения одной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 10:39 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Значит наверное придется вводить новый параметр в ХП-шках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 11:22 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
ShweikЗначит наверное придется вводить новый параметр в ХП-шках. Не, слишком накладно. Попробую на временных таблицах потестировать. схема работы: - есть фремворк ХП, проверяющих права доступа к объектам, права на действия над ними и прочее. - есть ХП предметной области "создать договор", "изменить валют договора" .... - процедуры предметной области открывают транзакцию и пытаются изменить объект, в результате - - фремворк ищет права на запрошенное действие от общих к частным Вызов процедуры предметной области "изменить заказ" может сопровождаться вызовами других процедур: "найти новый прайс лист", "пересчитать заказ" и т.д. Поскольку процеду предметной области открывает транзакцию, в которой исполняется все остальное, хочется иметь возможность выставлять флаг "отключить дальнейшие проверки". Это потребуется в том случае, если имеются общие права, которые перекрывают частные. Сильная экономия в количестве вызовов. Очевидно, флаг должен гарантированно сбрасываться по завершении транзакции. Таблицы ролей, действий и прав небольшие, поэтому все работает довольно быстро. Может быть я и не прав, но создание таблицы дорогая операция (отдельный файл?), хотя не уверен, что для временных таблиц нет каких-либо особых алгоритмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 11:54 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
tadminЧто, кроме временных таблиц можно использовать для хранения переменной, которая определяется в транзакции, видна только в рамках транзакции и гарантированно уничтожается после завершения транзакции? Фактически, надо хранить да/нет. не знаю насколько поможет, но... в хранимках (на сях) можно использовать статик переменные. в добавок при создании списков - можно хранить переменные с привязкой к рекордсету выбора(на сервере)... удачи Вам (круглый) ЗЫ Да, инфа по форточкам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 16:34 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
> схема работы Я бы подумал над нормальной логикой фреймворка, а не искал бы костыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 17:42 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
PostreSQL начинающий> Я бы подумал над нормальной логикой фреймворка, а не искал бы костыли. Не думаю, что поиск средств хранения транзакционной переменной указывает на ненормальность логики. Вы видите какие-то принципиально другие решения и можете дать совет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 10:19 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
В postgresql.conf в самом конце нужно в секции #--------------------------------------------------------------------------- # CUSTOMIZED OPTIONS #--------------------------------------------------------------------------- custom_variable_classes = '' # list of custom variable class names Поменять на custom_variable_classes = 'something' Потом можно в постгре делать set something.hernya='lalala'; show something.hernya; или применять в SQL select set_config('something.hernya','lalala',false) select current_setting('something.hernya') Переменная живет пока живет сессия . Т.е если надо управлять ей на уровне транзакции то после старта транзакции ее надо просто обнулить.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:37 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
> Не думаю Вижу. Imho напрасно. > Вы видите какие-то принципиально другие решения И не одно. > и можете дать совет? Уже. Подумайте над нормальной логикой фреймворка. "отключить дальнейшие проверки" - для чего и потребовалось хранить переменную - это кривые костыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 13:58 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
domanix set something.hernya='lalala'; спаибо, не знал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 14:17 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
вроде pgperl это умеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 23:47 |
|
||
|
хранение переменной во время транзакции
|
|||
|---|---|---|---|
|
#18+
Способ со временной таблицей вполне подошел. Единственно - я запнулся об известную особенность с кешированием запроса из функции, вот тут это подробно разобрали: http://archives.postgresql.org/pgsql-interfaces/2007-02/msg00006.php Если временная таблица создается в теле функции, необходимо использовать execute для всех операций с этой таблицей. В противном случае при первом исполнении кешируется OID и дальнейшие вызовы будут вызывать ошибки, что и понятно, таблица то каждый раз создается заново, получая новый OID. <тело функции> execute 'CREATE TEMP TABLE access_level(acl integer) ON COMMIT DROP'; -- и все операции тоже делаем через execute execute 'insert into access_level values(1)'; <тело функции> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2007, 12:25 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34818807&tid=2005002]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 442ms |

| 0 / 0 |
