Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Аналог for update из Oracle / 25 сообщений из 31, страница 1 из 2
20.12.2005, 15:42
    #33447008
Lav
Lav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Добрый день, господа.
Не будете ли Вы столь любезны объяснить мне каким образом я могу залочить записи в таличке на время работы с ними. (Залочить - защитить от UPD/DEL);
В оракле я обычно открывал курсор примерно так

Код: plaintext
1.
2.
3.
for cr in (select * from table for update)
begin
....
end;

Но в Sybase у меня похожии конструкции не проходят. Isolation level прj,jdfk менять до 3-го но вообщем не помогает.
Версия Syb ASA 8.0.0(2065)




--
Все что НЕ делается все к лучшему...
...
Рейтинг: 0 / 0
20.12.2005, 15:49
    #33447043
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav wrote:

> В оракле я обычно открывал курсор примерно так

А это не Оракл, это ASA.

> Но в Sybase у меня похожии конструкции не проходят.

Попробуй HOLDLOCK.

> Isolation level прj,jdfk менять до 3-го но вообщем не помогает.

Не бывает.

> Версия Syb ASA 8.0.0(2065)

А это старое барахло - апдейтить.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 15:58
    #33447070
Lav
Lav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
>> В оракле я обычно открывал курсор примерно так

>А это не Оракл, это ASA.

8-) Очень жаль

>> Но в Sybase у меня похожии конструкции не проходят.

>Попробуй HOLDLOCK.

Пробовал вообще никакого эффекта. Так же пробовал updlock, результат нулевой.

>> Isolation level прj,jdfk менять до 3-го но вообщем не помогает.

>Не бывает.

Чего имеено не бывает??!

>> Версия Syb ASA 8.0.0(2065)

>А это старое барахло - апдейтить.

Ну еслиб все так просто было я б и на форум никогда не залезал.
...
Рейтинг: 0 / 0
20.12.2005, 16:10
    #33447113
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
авторПробовал вообще никакого эффекта. Так же пробовал updlock, результат нулевой.
А как Вы пробовали holdlock и что это за updlock (в ASA нет такого хинта к запросам) ?

P.S. Еще стоит помнить, что в ASA блокировки держаться до выполнения COMMIT и что любая DDL операция всегда AUTOCOMMIT.
...
Рейтинг: 0 / 0
20.12.2005, 16:18
    #33447143
Lav
Lav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
ASCRUS авторПробовал вообще никакого эффекта. Так же пробовал updlock, результат нулевой.
А как Вы пробовали holdlock и что это за updlock (в ASA нет такого хинта к запросам) ?

P.S. Еще стоит помнить, что в ASA блокировки держаться до выполнения COMMIT и что любая DDL операция всегда AUTOCOMMIT.


Открыл первый isql
в нем набрал

Код: plaintext
1.
2.
3.
begin
select * from table updlock;
end;

То же самое во втором окне isql, и там благополучно извлекаются данные.
Никаких DDL и коммитов у меня нету. примитивный запрос из любой таблици попробуйте сами если мне не верите.
Ведь на сколько я понимаю isql не завершает сам транзакции???

Может быть updlock там и нету, но во всяком случае на него не ругается.
...
Рейтинг: 0 / 0
20.12.2005, 16:24
    #33447167
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav wrote:

> Пробовал вообще никакого эффекта.

Как именно пробовал?

> Так же пробовал updlock, результат нулевой.

Неудивительно - в ASA нет updlock.

> Чего имеено не бывает??!

Чтобы 3-й уровень изоляции не помог.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 16:28
    #33447179
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav wrote:

> попробуйте сами если мне не верите.

Не верим и пробовать не видим смысла.

> Ведь на сколько я понимаю isql не завершает сам транзакции???

У ISQL по умолчанию Commit после каждого оператора.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 16:29
    #33447181
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Не всегда конкретный ответ на поставленный вопрос полезен для
вопрошавшего. Наводящий вопрос: а зачем это понадобилось?

Не сильно удивлюсь, если это окажется что-то из разряда "защиты
записей", пока юзер правит накладную Я угадал?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 16:30
    #33447191
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav wrote:

> Может быть updlock там и нету, но во всяком случае на него не ругается.

Да мало ли на что оно не ругается... слова "updlock" вообще нет в
мануале... дальше объяснять ;)?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 16:31
    #33447193
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Вообще то во первых правильно в запросах WatcomSQL уровень изоляции на таблицу указывается так (как написано в BOL):
Код: plaintext
1.
SELECT *
FROM Table WITH (HOLDLOCK);
Во вторых в ISQL по умолчанию стоит опция автокоммитить.
В третьих, если Вам важно, чтобы полученные записи не обновлялись и не удалялись, но не беспокоят фантомы, т.е. Вас не интересуют новые добавляемые записи, подходящие по условию запроса, так как Вы не собираетесь еще раз выполнять запрос, то лучше ставить не третий, а второй уровень изоляции, который гарантирует, что данные не будут изменены или удалены до COMMIT-а, но не контролирует добавление записей другими сессиями:
Код: plaintext
1.
SELECT *
FROM Table WITH (REPEATABLEREAD);
Второй уровень изоляции в отличие от третьего аккуратно заблокирует от изменения и удаления извлеченные записи и не будет мешать другим сессиям добавлять, изменять или удалять другие записи, в отличие от третьего уровня, который запросто это может организовать в зависимости от различных условий.

авторНе сильно удивлюсь, если это окажется что-то из разряда "защиты
записей", пока юзер правит накладную Я угадал?
Более чем уверен - обычная практика людей, работающих с версионниками, не раз встречался
...
Рейтинг: 0 / 0
20.12.2005, 16:34
    #33447200
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
автор>А это не Оракл, это ASA.

8-) Очень жаль
Все в мире относительно. Мне вот с точностью до наоборот всегда жаль, когда приходится не творить чудеса на ASA, а возиться с Oracle
...
Рейтинг: 0 / 0
20.12.2005, 17:22
    #33447341
Lav
Lav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
2 Dim2000
>>У ISQL по умолчанию Commit после каждого оператора.
Ха-ха-ха, как смешно, не стоит у меня там ни одной галки по поводу коммитов. Всегда коммитчю сам, и делаю это с умом.

2 Александр Гoлдун
>>Не сильно удивлюсь, если это окажется что-то из разряда "защиты
записей", пока юзер правит накладную Я угадал?

Удивлятся придется, потому что накладные здесь ни при чём. Речь идет о сложных банковских системах, с большим количеством пользователей, счетов и остатков по счетам. Так вот пока отрабатываю долгие процедуры записи надо заблокировать(понятие блокировки раскрывал выше).

2 dim200
>>Да мало ли на что оно не ругается... слова "updlock" вообще нет в
мануале... дальше объяснять ;)?
Можно не объяснять, sybase asa как я понял, не субд, а система с искусnвенным интелектом: код у процедур форматирует сама, хинты и операторы игнорирует, незнакомые слова тоже игнорирует, и средств для комфортного написания кода тоже для нее не существует

2 ASCRUS

>>Вообще то во первых правильно в запросах WatcomSQL уровень изоляции на таблицу указывается так (как написано в BOL):
Замечательно, напоминаю у меня версия 8xxxx, может в более поздних оно и так.
Но вот у 8xxxxx вот так работает
Код: plaintext
select * from card holdlock;
а вот так ругается
Код: plaintext
select * from card with (holdlock);

>>когда приходится не творить чудеса на ASA, а возиться с Oracle
В том то и дело что чудеса и никакой четкости и ясности.
...
Рейтинг: 0 / 0
20.12.2005, 17:43
    #33447411
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Код: plaintext
select * from card holdlock;
Ага - назначаем таблице card алиас "holdlock" и удивляемся, чего это уровень изоляции не срабатывает и как это она updlock пропускает Ладно, раз в 8-ке нет WITH, делайте так:
Код: plaintext
1.
2.
SET TEMPORARY OPTION ISOLATION_LEVEL =  3 ;
SELECT * FROM card;
SET TEMPORARY OPTION ISOLATION_LEVEL = ;
и стоит подумать все таки над уровнем блокировки - правда ли нужен исключительно сериализуемый уровень или же уровень ниже тоже пойдет - иначе можно "невзначай" блокирнуть другие сессии.

авторВ том то и дело что чудеса и никакой четкости и ясности.
Если бы Вы открыли BOL для ASA и стали его читать, то не осталось бы места чудесам и пришло понимание четкости и ясности, с учетом того, что там все буквально расжевано и разложено по полочкам. Пока же Вы только доказали очередную истину, что "То, что не знаю, то и плохое".

авторМожно не объяснять, sybase asa как я понял, не субд, а система с искусnвенным интелектом: код у процедур форматирует сама, хинты и операторы игнорирует, незнакомые слова тоже игнорирует, и средств для комфортного написания кода тоже для нее не существует
Так и есть - в ASA действительно встроен исскуственный интеллект и он постоянно развивается :) Насчет написания незнакомых слов алиасами мы уже выяснили ;) А вот насчет комфортного написания кода как всегда вопрос спорный и я например привыкнув к Central/ISQL не особо комфортно чувствую себя с PL/SQL Developer, особенно с учетом его раздражающих фенечек при редактировании кода, который кстати не входит в состав Оракла и является платным (я уже молчу про примитивный GUI, входящий в комплект Оракла). Меня лично больше устраивать прагматичный ISQL, зато с прекрасными графическим планом запросов и удобный на визардах Central с замечательными деббагером, профайлером ХП и консультантом индексов и здесь Ораклу и его родным и сторонним GUI ой далеко.
...
Рейтинг: 0 / 0
20.12.2005, 17:45
    #33447423
kluv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Метку во времянку и цикл ожидания. Хватит херней страдать, ничего тебе тут путного не скажут - из монитора аж пальцы торчат
...
Рейтинг: 0 / 0
20.12.2005, 17:48
    #33447435
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
kluvМетку во времянку и цикл ожидания. Хватит херней страдать, ничего тебе тут путного не скажут - из монитора аж пальцы торчат
Прямо интересно стало - и что же он ждать должен в цикле ожидания, засунув "метку" по времянке ?
...
Рейтинг: 0 / 0
20.12.2005, 17:49
    #33447436
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav wrote:

> не стоит у меня там ни одной галки по поводу коммитов.

UPDLOCK в ASA нет. И на третьем уровне изоляции никаких чудес нет, и
если сделать SELECT ..., то до COMMIT-а ни с одной из выбранных записей
ничего сделать не удастся.

> Удивлятся придется, потому что накладные здесь ни при чём. Речь идет о
> сложных банковских системах, с большим количеством пользователей, счетов
> и остатков по счетам. Так вот пока отрабатываю долгие процедуры записи
> надо заблокировать(понятие блокировки раскрывал выше).

SET TEMPORARY OPTION ISOLATION_LEVEL = 3

> Можно не объяснять, sybase asa как я понял, не субд, а система с
> искусnвенным интелектом

Угумс. Поэтому именно её и используем :).

> код у процедур форматирует сама

Уже давно не форматирует. Впрочем, я сам пользуюсь SC 3.2, ибо
форматировать самому лень, но никого в этом не упрекаю ;).

> хинты и операторы игнорирует

ASA не нужны хинты - она достаточно сообразительна, чтобы в них не
нуждаться :).

> Но вот у 8xxxxx вот так работает
>
> select * from card holdlock;
>
> а вот так ругается
>
> select * from card with (holdlock);

Ну и что?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 17:55
    #33447456
kluv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Метку во времянку и цикл ожидания. Хватит херней страдать.
...
Рейтинг: 0 / 0
20.12.2005, 17:56
    #33447457
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Lav пишет:

>>Не сильно удивлюсь, если это окажется что-то из разряда "защиты
>> записей", пока юзер правит накладную Я угадал?

> Удивлятся придется, потому что накладные здесь ни при чём. Речь идет о
> сложных банковских системах, с большим количеством пользователей, счетов
> и остатков по счетам. Так вот пока отрабатываю долгие процедуры записи
> надо заблокировать(понятие блокировки раскрывал выше).

Что ж, редкое исключение :) Просто в подавляющем большинстве случаев
причина подобного вопроса именно в желании получить логическую
блокировку объекта, связанную с какими-то действиями пользователя.

Все-таки обнови версию. Использовать 8.0.0, и уж тем более в банковской
системе, немножко, мягко говоря, странновато.

Возможность указать WITH (HOLDLOCK) появилась в 8.0.1

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 17:59
    #33447468
kluv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Угу. Обожаю дельные советы, касающиеся обновления версии.

Можыд сразу СУБД поменять, чего мелочиться
...
Рейтинг: 0 / 0
20.12.2005, 18:01
    #33447477
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
kluvУгу. Обожаю дельные советы, касающиеся обновления версии.

Можыд сразу СУБД поменять, чего мелочиться
Уважаемый kluv. Вам есть что то сказать, или просто уже пятничное настроение ? Автор топика задал конкретный вопрос, ему уже дали конкретные ответы, Ваши же сообщения согласно правилам форума можно рассматривать как флуд.
...
Рейтинг: 0 / 0
20.12.2005, 18:02
    #33447478
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
> Все-таки обнови версию. Использовать 8.0.0, и уж тем более в банковской
> системе, немножко, мягко говоря, странновато.
>
> Возможность указать WITH (HOLDLOCK) появилась в 8.0.1

Но лучше сразу до 8.0.4 + последний EBF. 8.0.1 тоже был еще очень сырой.
Обновление можно скачать с sybase.com бесплатно. Естественно, делать
апгрейд сломя голову не надо - стоит протестировать систему, на сколько
возможно.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 18:03
    #33447483
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
kluv wrote:

> Обожаю дельные советы, касающиеся обновления версии.

Если ты хочешь использовать фичу, которой нет в твоей версии, у тебя
есть совершенно демократический выбор из двух вариантов:

1) обновить версию;
2) не использовать фичу.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
20.12.2005, 18:10
    #33447501
kluv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
ASCRUS kluvМетку во времянку и цикл ожидания. Хватит херней страдать, ничего тебе тут путного не скажут - из монитора аж пальцы торчат
Прямо интересно стало - и что же он ждать должен в цикле ожидания, засунув "метку" по времянке ?

Автор поста в курсе. Ира, и ты эту гадость не читай, там даже на select залочится все. Временную табличку и метку на начало выполнения со снятием по концу. Остальные, нарвавшись на метку - ждут.
...
Рейтинг: 0 / 0
20.12.2005, 18:17
    #33447517
kluv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Dim2000
kluv wrote:

> Обожаю дельные советы, касающиеся обновления версии.

Если ты хочешь использовать фичу, которой нет в твоей версии, у тебя
есть совершенно демократический выбор из двух вариантов:

1) обновить версию;
2) не использовать фичу.

О тож, если у тебя одна база на локале, в которой регистрируется путевые листы ассенизаторских машин. Тогда канает.
А если у тебя по всей стране базы раскиданы, с которыми ежедневно работает куча человек, при этом вообще(!!!) нет админов, то обновляться - это экстрим еще тот.
...
Рейтинг: 0 / 0
20.12.2005, 18:26
    #33447546
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог for update из Oracle
Александр Гoлдун wrote:

> Но лучше сразу до 8.0.4 + последний EBF.

8.0.4 ещё пока нет. Последний из V8 на сей день - 8.0.3.5331.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Аналог for update из Oracle / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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