|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 03 Aug 2001 16:19:24 To : Konstantin Ryabov Subject : Re: Вытаскивание ID последнего инсерта в базу -------------------------------------------------------------------------------- KR> так вы не поняли KR> весь смысл в том что бы сделать прогу базо независимой. KR> в ней будет меняться только драйвер DBD В более-менее сложном случае это с разумной надежностью невозможно. Уж больно базы разные. KR> и тут нельзя юзать что то что предоставляет сама база. KR> тут пробегала идея насчет блокировать таблицу затем инсертить KR> вытаскивать по максимальному ID и разблокировать. KR> Внимание вопрос: существует ли какой либо способ KR> блокировать таблицу но только средствами perl KR> например пока один скрипт пишет в базу он где то устанавливает флаг KR> и пока он установлен все другие скрипты ждут. Hет, не существует. Если нижележащая операционка поддерживает System V IPC, то можно выставлять семафоры, если нет, можно делать файлы-семафоры, но это все с разумной надежностью (надежнее тупого max(id)) довольно геморройно и заметно проигрывает штатным механизмам по времени выполнения. Ты чем так страдать, заведи 1 (одну) функцию, которая будет отвечать за выдачу этого id, и переписывай ее в зависимости от базы. Можно в отдельный модуль вынести, только я обычно в отдельный модуль выношу всю работу с базой, ибо к разным базам и запросы строятся по-разному. -- Artem Chuprina <ran@ran.pp.ru> FIDO: 2:5020/371.32 --- slrn/0.9.7.0 (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/7378832a92db2.html, оценка из 5, голосов 10
|