powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE - временные таблицы
26 сообщений из 26, показаны все 2 страниц
ASE - временные таблицы
    #33159947
В ASA есть хорошая вещь Global Temporary Table

А можно ли аналог сделать в ASE (12.5.3)?
То есть временная таблица, которая существует всегда,
переживает перезагрузку и при этом между сессиями разделяет данные?

Надобно это для того, чтобы из разных процедур в одной сессии к ней обращаться.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33159991
оу кажется мысль пришла как это сделать из обычной временной таблицы
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33160318
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так зачем мысли-то тебе ? сделай ПРОСТО ТАБЛИЦУ, нормальную обычную невременную таблицу и все. НЕ в tempdb, если хочешь , чтобы она переживала перезагрузку, в tempdb , если хочешь, чтобы НЕ переживала перезагрузку.
А аналога Global Temporary Table в ASE нет.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33160360
MasterZiv: единственное - меня в простой таблице не устраивает одна штука.
Нет разделения данных между сессиями.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33160414
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавь в таблицу колонку, в которую помещай @@SPID - идентификатор сессии (только не забывай чистить после себя - чтоб не захламлять, и перед записью данных - чтоб глаза на лоб не выскакивали)
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33160540
да, я про такое тоже подумал. Правда тогда там записей много станет.
Но вариант хороший.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33160605
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавь таблицу в базу model - она будет создаваться в tempdb каждый раз при старте сервера
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33162904
.ES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golsaДобавь в таблицу колонку, в которую помещай @@SPID - идентификатор сессии ( только не забывай чистить после себя - чтоб не захламлять, и перед записью данных - чтоб глаза на лоб не выскакивали)
А вот если у меня коннект порвался - можно ли делать очистку автоматически со стороны сервера? Я не смог придумать, как.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33163128
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.ES golsaДобавь в таблицу колонку, в которую помещай @@SPID - идентификатор сессии ( только не забывай чистить после себя - чтоб не захламлять, и перед записью данных - чтоб глаза на лоб не выскакивали)
А вот если у меня коннект порвался - можно ли делать очистку автоматически со стороны сервера? Я не смог придумать, как.

в ASE есть create event ?
можно поставить стирать записи раз в сутки, где разница между текущей датой и датой создания больше какого-то значения.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33163171
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рыжий Кот wrote:

> в ASE есть create event ?
> можно поставить стирать записи раз в сутки, где разница между текущей
> датой и датой создания больше какого-то значения.

А если CREATE EVENT нет - на это дело можно навострить системный шедулер :).
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33163253
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
Рыжий Кот wrote:

> в ASE есть create event ?
> можно поставить стирать записи раз в сутки, где разница между текущей
> датой и датой создания больше какого-то значения.

А если CREATE EVENT нет - на это дело можно навострить системный шедулер :).
Posted via ActualForum NNTP Server 1.2

люблю все в одном :)
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33163741
авторА вот если у меня коннект порвался - можно ли делать очистку автоматически со стороны сервера? Я не смог придумать, как.

Я бы предложил просто перед заполнением проверять, есть ли записи с моим @@spid и удалять их, ведь @@spid уникальный как-никак.

По поводу топика - обошелся вполне обычными временными таблицами,
просто что-то заклинило забыл, что можне ее в пакете до процедуры создать :0)
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33164835
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я удаляю сразу без проверки. И чищу перед и после. Перед - это как раз на случай некорректного завершения предыдущего сеанса с таким же @@spid.
Ну а мусор убираю в ночь на воскресенье командой

truncate table [[database.]owner.]table_name

в скрипте по расписанию.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33165330
.ES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Я бы предложил просто перед заполнением проверять, есть ли записи с моим @@spid и удалять их, ведь @@spid уникальный как-никак.

- В том-то и дело, что после реконнекта @@spid будет уже другим, и даже если предыдущее значение запоминать на клиенте, нет гарантии, что его не заберёт какой-нибудь другой клиент. Но вот если разделение данных обеспечить только между различными IP-адресами (вместо @@spid), тогда прокатит.

>> ...мусор убираю в ночь на воскресенье...

- Хорошо тебе... А вот у нас производство непрерывное:)
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33165391
автор>> Я бы предложил просто перед заполнением проверять, есть ли записи с моим @@spid и удалять их, ведь @@spid уникальный как-никак.

- В том-то и дело, что после реконнекта @@spid будет уже другим, и даже если предыдущее значение запоминать на клиенте, нет гарантии, что его не заберёт какой-нибудь другой клиент. Но вот если разделение данных обеспечить только между различными IP-адресами (вместо @@spid), тогда прокатит.

ну и что? Одновременно может существовать только один @@spid,
поэтому если мы, войдя, видим эти записи- они явно не актуальные, ведь мы смогли получить их spid.
Между сессиями сохранять данные не нужно, они же временные.
И golsa без проверки их удаляет это правильно, даже проверять не надо.
А вот ip адрес, uid и прочие - не уникальны, на них опираться нельзя.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33165913
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.ES
А вот если у меня коннект порвался - можно ли делать очистку автоматически со стороны сервера? Я не смог придумать, как.

У тебя будет в коде фаза инициализации, где ты будешь стирать все записи данной сессии. Там же стирай и все записи несуществующих сессий. И все.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33166502
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.ES>> Я бы предложил просто перед заполнением проверять, есть ли записи с моим @@spid и удалять их, ведь @@spid уникальный как-никак.

- В том-то и дело, что после реконнекта @@spid будет уже другим, и даже если предыдущее значение запоминать на клиенте, нет гарантии, что его не заберёт какой-нибудь другой клиент. Но вот если разделение данных обеспечить только между различными IP-адресами (вместо @@spid), тогда прокатит.

>> ...мусор убираю в ночь на воскресенье...

- Хорошо тебе... А вот у нас производство непрерывное:)

Наверно единственный правельный выход - это создавать временные таблицы сразу после коннекта. Не в ХП. Чтобы они всегда висели и были доступны сессии из любой процедуры. Truncate всегда им можно сделать.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33167319
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman
Наверно единственный правельный выход - это создавать временные таблицы сразу после коннекта. Не в ХП. Чтобы они всегда висели и были доступны сессии из любой процедуры. Truncate всегда им можно сделать.
Нафиг-нафиг. Временные #таблицы в ASE, создющиеся вне процедуры - это постоянный геморрой. Есть к сожалению опыт...
Постоянные со spid лучше. Или как вариант - с suid, если под одним логином только один чел в одном приложении работает - в этом случае можно условие suid=suser_id() во вьюшку воткнуть, а со @@spid такое не выйдет.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33167456
.ES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv .ES
А вот если у меня коннект порвался - можно ли делать очистку автоматически со стороны сервера? Я не смог придумать, как.

У тебя будет в коде фаза инициализации, где ты будешь стирать все записи данной сессии. Там же стирай и все записи несуществующих сессий. И все.

Вот оно - неочевидное, но правильное решение! И никаких шедулеров.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33167728
авторНафиг-нафиг. Временные #таблицы в ASE, создющиеся вне процедуры - это постоянный геморрой. Есть к сожалению опыт...


а почему, позвольте поинтересоваться?
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33167753
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуру без таблицы не залить.
Алгоритм заливки такой: создается временная таблица , создается процедура, удаляется таблица. Сложновато, ненужные завязки - абсолютно согласен. Уж лучше псевдовременная в tempdb.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33168299
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sn1251 gardenman
Наверно единственный правельный выход - это создавать временные таблицы сразу после коннекта. Не в ХП. Чтобы они всегда висели и были доступны сессии из любой процедуры. Truncate всегда им можно сделать.
Нафиг-нафиг. Временные #таблицы в ASE, создющиеся вне процедуры - это постоянный геморрой. Есть к сожалению опыт...
Постоянные со spid лучше. Или как вариант - с suid, если под одним логином только один чел в одном приложении работает - в этом случае можно условие suid=suser_id() во вьюшку воткнуть, а со @@spid такое не выйдет.

suser_id() - Это значит что одн юзер может только с одного компа работать...
иначе временные данные двух сессий пересекутся.


А чем плохи #таблицы на уровне сессий? - в чем геморрой?...
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33168392
авторПроцедуру без таблицы не залить.
Алгоритм заливки такой: создается временная таблица , создается процедура, удаляется таблица

ага, я так и сделал чтобы решить свой вопрос из топика.
И все же интересно почему не любят #таблицы - еще какие-то глюки могут случиться?
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33168495
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему - #таблицы локально на уровне одной процедуры (скрипта, модуля) очень даже ничего. А вот если их использовать для передачи данных между процедурами - система получается трудно развиваемая/изменяемая хотябы потому что create и drop разнесены и отследить их можно только разобрав всю логику.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33169446
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так в чем же проблема в создании #таблиц не в процедурах а сразу на уровне сессий?... все равно не понимаю....
Конешна ясный перец, что всякий раз нужно исполнять некий скрипт инициализации. Дык это нужно делать только один раз.
...
Рейтинг: 0 / 0
ASE - временные таблицы
    #33170080
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет никакой проблемы. Только внутри транзакции открытой не создавай - и все. Но это и внутри процедуры делать не рекомендуется.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE - временные таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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