powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно организовать изменение данных
9 сообщений из 9, страница 1 из 1
Как правильно организовать изменение данных
    #34439020
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица. Пользователь становиться на запись и нажимает кнопку "Редактировать".
Нужно сделать что бы никто другой после этого не смог открыть эту же запись на редактирование, до тех пор пока первый пользователь не закончит работу с записью.

После того как пользователь нажал на кнопку "Редактироване" данные вычитываются в память, и там изменяются пользователем.

Пользователь может завершить редактирвание, а может отказаться от него.

Какими SQL командами я могу выполнить перечисленные действия?

Ps. База данных SQL Anywhere
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34439064
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это называется блокировкой. Рекомендую поискать посты на форуме, потому что способы блокировок бывают разные и каждый обладает как преимуществами так и недостатками. Присмотрите наиболее подходящий вариант.
---
aka VIR. No pity. No mercy. No remorse. No Regret
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34439423
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поискал блокировку, везде красной нитью проходит мысль, что нужно иметь в таблице некое поле, в которое записывается блокирована запись или нет.

Скажите мне только одно. A что средствами СУБД это нельзя сделать? Например, я в документации вычитал, что есть такая команда:
Код: plaintext
Select * from Table where id= 1  for update

Я так понимаю, что если один пользователь ее выполнил, то второй в это время менять запись не может? Однако, после тестов выяснилось, что это не так. А тогда как?
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34439620
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_Скажите мне только одно. A что средствами СУБД это нельзя сделать? Можно, н о это в ряде случаев неудобно и очень платформозависимо. Проще сабж разрулить программно. Сделать список заблокированных записей. Кто первый начнет редактирование, тот создает в списке запись, кто опоздал (запись уже есть) - просто читает, не редактируя. Можно наворотить сложный механизм - логгирование, оповещение и т.д. под кокретные нужды.
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34439907
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям как в Оракле :) (Select * from Table where id=1 for update)
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34439929
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To LSV - и еще надо написать нормальный менеджер этого дела,потому как после того,как пользователи в процессе работы начнут отваливаться,то записи в журнале будут оставаться записи,кот надо грамотно удалять.
Ramzay: если поискать по ключевому слову Блокировка,то можно найти много описанных механизмов с менеджерами.

p.s.мы в ряде случаев потребляем select for update (но он снимается по commit,либо dbms_lock - он снимается когда нам надо и убивается сам при отключении пользователя от бд,что очень удобно-но это Oracle но я думаю у sybase есть аналоги)
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34441217
Ramzay_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtockПрям как в Оракле :) (Select * from Table where id=1 for update)

Да, за исключением маленького пустяка. Ежели я пишу:
Код: plaintext
Select * from Table where id= 1  for update
то после этого другой пользователь спокойно может менять запись. И зачем мне такое нужно?

Если я пытаюсь организовать транзакцию:
Код: plaintext
1.
Begin Tran Tr1;
select * from Table where id= 1  for update
то вообще выдает синтаксическую ошибку. Это то что имел ввиду LSV:
LSV в ряде случаев неудобно и очень платформозависимо?
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34441726
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ramzay_Есть таблица. Пользователь становиться на запись и нажимает кнопку "Редактировать". и идет пить пиво. Чтобы не висела транзакция БД авторвезде красной нитью проходит мысль, что нужно иметь в таблице некое поле, в которое записывается блокирована запись или нет.
...
Рейтинг: 0 / 0
Как правильно организовать изменение данных
    #34442596
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Да, за исключением маленького пустяка. Ежели я пишу:" - собственно в оракле после этого у другого пользователя вывалится ошибка - мол ресурс занят (если указано for update nowait).У нас вопрос разных платформ не стоял,да и у многих он надуман,поэтому такие вещи мы делаем средствами субд.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно организовать изменение данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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