Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2012, 19:00   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Что будет если пользователи одновременно добавят запись в БД?

БД - Access, доступ через ADOQuery. Ключевое поле в базе данных - счетчик.

Вопрос, если несколько пользователей одновременно добавят запись - как на это будет реагировать Access? Получится две записи с одинаковым номером в ключевом поле?
Dux вне форума Ответить с цитированием
Старый 15.11.2012, 19:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Одновременно не смогут. Сначала будет одобрена первая транзакция - ей дастся свободный IDшник (если он автоинкрементный), потом только пойдет вторая.
Все равно разбор полетов будет последовательный - кто первый тот и папа )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2012, 19:39   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Одновременно не смогут. Сначала будет одобрена первая транзакция - ей дастся свободный IDшник (если он автоинкрементный), потом только пойдет вторая.
Все равно разбор полетов будет последовательный - кто первый тот и папа )
Т.е. на этот счет можно не заморачиваться..?

Stilet - подскажите, вы не в курсе, почему народ на Access грешит? могут возникнуть проблемы при многопользовательском доступе?
Dux вне форума Ответить с цитированием
Старый 15.11.2012, 19:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не только. Акцесс не предназначался изначально как многопользовательская, и по сей день особо не предназначается, хоть и снабжен мало мальскими механизмами сей стороны.
С таким же успехом можно и SQLlite ругать и FoxPro.
Все дело в задаче
Акцесс очень хорошо подходит в качестве локальной однопользовательской БД, поскольку винда его любит сильнее других.
Задача какая стоит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2012, 20:44   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
могут возникнуть проблемы при многопользовательском доступе?
Могут. Из собственного опыта программирования под Акцесс: два пользователя открыли запись, никто сохранить не может, пока один из них не выйдет. Ибо для чтения открыта, а для записи - заблокирована.
Бывало, честно говоря, редко, раза два от силы - НО бывало, что не есть гуд, так как такие проблемы надо еще на этапе разработки убивать.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.11.2012, 21:07   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
два пользователя открыли запись, никто сохранить не может, пока один из них не выйдет. Ибо для чтения открыта, а для записи - заблокирована.
Ты удивишся, но это во всех СУБД есть. Называется механизм Deadlock. Это нормально для любой уважающей себя системы, так что не наговаривай на Ассекс

P.S. Кстати про дедлоки у Тома Кайта хорошо написано, можете почитать (не смотря на то что пишет он про Оракл, его литература заслуживает внимания)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2012, 21:12   #7
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Задача какая стоит?
На сервере лежит база. 5 операторов, время от времени заходят, редактируют. + 2 менеджера - в режиме readonly
Dux вне форума Ответить с цитированием
Старый 15.11.2012, 21:24   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Ты удивишся, но это во всех СУБД есть. Называется механизм Deadlock.
Виталий, возможно, я неправильно понимаю принцип deadlock, но мне всегда казалось, что даже для чтения может открыть только один юзер, второму будет выдано что-то типа "Запись заблокирована". Нет?

За Тома Кайта отдельное спасибо, пошел качать.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.11.2012, 22:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что даже для чтения может открыть только один юзер, второму будет выдано что-то типа "Запись заблокирована". Нет?
Не всегда. Что-то есть в SQL типа инструкции exclusive (не помню точно, книгу надо открывать...), которая запрещает доступ к набору, открытому одним пользователем (позаписно, постранично, потаблично и т.д. - читай Кайта, там написано).
как Аксекс действует не скажу, но не факт что он такие фокусы устроит, хотя не поручусь.
Цитата:
На сервере лежит база.
Расшарена папка на запись, я так понимаю?
проблема тут у тебя еще одна появляется - расшаренные на запись каталоги - дыра в безопасности. Это впрочем еще один гвоздь в гроб локальных СУБД, тут не поспоришь, гики аж захлебываются, когда у них появляется возможность уличить в этом.
Если не критично я бы на твоем месте выбрал другую СУБД.
Я кста использую MS SQL Express. его можно неплохо защитить, и он многопользовательский. Работает лучше и стабильнее, удобнее настраивать чем Акцесс. По умолчанию в винде для него есть провайдер, так же как и для Акцесса (А даже через ODBC можно подключение настроить - обычно так и делают, удобнее получается). Работать с ним так же через ADO. К тому же Сиквел лучше равивается с отличии от акцесса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2012, 00:12   #10
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Спасибо за комментарии.. пока попробую продолжить с Access. Дальше видно будет.
Dux вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если я хочу чтобы переменная была рандом, нужно просто написать, что типа а:=random? какой это будет тип переменных? gylayko Помощь студентам 6 04.10.2011 12:58
Что будет если отправить бесконечный поток кислорода в открытый космос? Des Свободное общение 31 16.12.2010 09:22
Если СЕГОДНЯ не вчера, то что будет завтра? r_tem Microsoft Office Excel 4 12.10.2010 12:16
Принтер будет работать лучше если узнает что его ждет в случае .. HellMercenariess Компьютерное железо 3 09.11.2009 09:59
Что мне будет за то, если я взломаю сайт? Лукманов Александр Безопасность, Шифрование 28 08.03.2009 21:32