powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Аналог for update из Oracle
25 сообщений из 31, страница 1 из 2
Аналог for update из Oracle
    #33447008
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа.
Не будете ли Вы столь любезны объяснить мне каким образом я могу залочить записи в таличке на время работы с ними. (Залочить - защитить от 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
Аналог for update из Oracle
    #33447043
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Аналог for update из Oracle
    #33447070
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> В оракле я обычно открывал курсор примерно так

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

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

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

>Попробуй HOLDLOCK.

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

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

>Не бывает.

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

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

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

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

P.S. Еще стоит помнить, что в ASA блокировки держаться до выполнения COMMIT и что любая DDL операция всегда AUTOCOMMIT.
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447143
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Аналог for update из Oracle
    #33447167
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lav wrote:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8-) Очень жаль
Все в мире относительно. Мне вот с точностью до наоборот всегда жаль, когда приходится не творить чудеса на ASA, а возиться с Oracle
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447341
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Аналог for update из Oracle
    #33447411
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Аналог for update из Oracle
    #33447423
kluv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Метку во времянку и цикл ожидания. Хватит херней страдать, ничего тебе тут путного не скажут - из монитора аж пальцы торчат
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447435
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kluvМетку во времянку и цикл ожидания. Хватит херней страдать, ничего тебе тут путного не скажут - из монитора аж пальцы торчат
Прямо интересно стало - и что же он ждать должен в цикле ожидания, засунув "метку" по времянке ?
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447436
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Аналог for update из Oracle
    #33447456
kluv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Метку во времянку и цикл ожидания. Хватит херней страдать.
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447457
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lav пишет:

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

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

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

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

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

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

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

Можыд сразу СУБД поменять, чего мелочиться
Уважаемый kluv. Вам есть что то сказать, или просто уже пятничное настроение ? Автор топика задал конкретный вопрос, ему уже дали конкретные ответы, Ваши же сообщения согласно правилам форума можно рассматривать как флуд.
...
Рейтинг: 0 / 0
Аналог for update из Oracle
    #33447478
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Все-таки обнови версию. Использовать 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
Аналог for update из Oracle
    #33447483
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kluv wrote:

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

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

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

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

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

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

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

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

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

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


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