![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
можно ли сделать delay в ХП IB7.5? [IB7.5]
July © (2009-02-11 11:08:00)Здравствуйте!
Собственно вопрос коротко - в теме.
Т.е. ищу возможность, подобную функции waitfor в SQL-Server.
Нужно с целью иметь возможность подождать несколько секунд и сделать повторную попытку проверки данных и так несколько раз, прежде чем отвалить сообщение, что допустимое время ожидания истекло. Ну или, если какая-то из попыток оказалась успешной, продолжить работу процедуры.
Очень желательно сделать это не из приложения, а именно внутри хранимой процедуры БД.
Возможно ли это в Interbase в принципе?
July (2009-02-11 12:18:00) [21]на [13] см. [12]
поясню, откуда такая идея - просто эта проверяемая запись - флаг, означающий, выполняется ли еще некая обработка над совокупностью данных, имеющая некоторое отношение к этой записи.
Так туманно - совокупность, потому что данные по нескольким таблицам, не всегда непосредсвенно связанным, чтобы просто положиться на автоматическую проверку целостности и обработка тоже достаточно навороченная и растянутая по времени, короче говоря это все приводит к тому, что гарантий, которые дает манипулирование настройками уровнями изоляций, недостаточно, приходится раздумывать над добавлением своих таких вот извращенских методов.
Я знаю, что это все из-за изначально заложенной в базу избыточности, эта тема отдельная, сейчас не о ней.
Johnmen (2009-02-11 12:12:00) [22]
> July (11.02.09 12:07) [12]
1. Если это про указанное извращение, то оно никому не нужно. Даже тебе.
2. Задержку делаешь циклом с проверкой наперед заданного времени.
Сергей М. (2009-02-11 12:11:00) [23]http://www.ibase.ru/devinfo/pslock.htm
Сергей М. (2009-02-11 12:08:00) [24]
> Конечно нет
Да, это я ляпнул - прочитал одно, а думал про другое.
> July
Ответишь на [7] ?
July (2009-02-11 12:07:00) [25]
> Ты, похоже, таким макаром пытаешься эмулировать блокировку
> одновременного доступа к записи ?
угадали :)
извращенский способ, да? :)
другого в голову пока не пришло..
Johnmen
> Я думаю, что будет.
Я смотрю есть разногласия по этому вопросу.
Так или иначе, я бы с этим разобралась, если бы была возможность поэкспериментировать.
А пока я возилась с переменными типа timestamp, пыталась манипулировать вычислениями истеrшего времени, но что-то ничего не получается..
to Кщд - может и не понадобиться, придумается что-нибудь более умное, но это не главный вопрос в данный момент вопрос, который занимает - мне просто нужно уяснить, можно ли вообще технически сделать вручную delay внутри процедуры Interbase?
Кщд (2009-02-11 12:05:00) [26]>July (11.02.09 12:01) [8]
никаких "других" правил
процедура выполняется в контексте транзакции
Кщд (2009-02-11 12:02:00) [27]>Сергей М. © (11.02.09 11:56) [5]
это какая-то уникальная фича IB7.5 - не видеть данных, подтвержденных другой транзакцией, при уровне read committed?
Johnmen (2009-02-11 12:01:00) [28]
> Сергей М. © (11.02.09 11:56) [5]
Я думаю, что будет.
July (2009-02-11 12:01:00) [29]Тогда поправьте, если не трудно.
Что же, даже если процедура делается в рамках транзакции с уровнем read commited, для операторов, которые внутри нее действуют другие правила?
Сергей М. (2009-02-11 12:00:00) [30]
> July
Ты, похоже, таким макаром пытаешься эмулировать блокировку одновременного доступа к записи ?
Кщд (2009-02-11 11:59:00) [31]>July (11.02.09 11:51) [4]
правильно
а вот делать delay, скорее всего, неправильно
но, впрочем, в Вашем посте нет информации "против" такого подхода, но нет и "за"
Сергей М. (2009-02-11 11:56:00) [32]
> не правильно?
Конечно нет)
July (2009-02-11 11:51:00) [33]Слышала, слышала :)
Read commited
правда что-то я засомневалась, правильно ли я понимала..
я думала, что при таком уровне, если во время выполнения моей процедуры другой транзакцией данные будут изменены и сделан commit, в процедуре это станет видно, ..не правильно?
Сергей М. (2009-02-11 11:42:00) [34]
> если оно <>0, надо подождать
Эдак ты у моря погоды будешь ждать, до самого морковкиного заговения)
Про уровни изоляции транзакций что-нибудь слышала ?
July (2009-02-11 11:29:00) [35]
> Каких ?
Просто запросом читаю поле из обычной таблицы, если оно <>0, надо подождать, иначе - все ОК и поехали дальше
Сергей М. (2009-02-11 11:21:00) [36]
> попытку проверки данных
Каких ?
Конкретней ..