Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE - временные таблицы / 25 сообщений из 26, страница 1 из 2
11.07.2005, 17:32
    #33159947
ASE - временные таблицы
В ASA есть хорошая вещь Global Temporary Table

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

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

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

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

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

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

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

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

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

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

truncate table [[database.]owner.]table_name

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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


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