|
|
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Есть таблица. Пользователь становиться на запись и нажимает кнопку "Редактировать". Нужно сделать что бы никто другой после этого не смог открыть эту же запись на редактирование, до тех пор пока первый пользователь не закончит работу с записью. После того как пользователь нажал на кнопку "Редактироване" данные вычитываются в память, и там изменяются пользователем. Пользователь может завершить редактирвание, а может отказаться от него. Какими SQL командами я могу выполнить перечисленные действия? Ps. База данных SQL Anywhere ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 00:53 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Это называется блокировкой. Рекомендую поискать посты на форуме, потому что способы блокировок бывают разные и каждый обладает как преимуществами так и недостатками. Присмотрите наиболее подходящий вариант. --- aka VIR. No pity. No mercy. No remorse. No Regret ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 04:52 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Поискал блокировку, везде красной нитью проходит мысль, что нужно иметь в таблице некое поле, в которое записывается блокирована запись или нет. Скажите мне только одно. A что средствами СУБД это нельзя сделать? Например, я в документации вычитал, что есть такая команда: Код: plaintext Я так понимаю, что если один пользователь ее выполнил, то второй в это время менять запись не может? Однако, после тестов выяснилось, что это не так. А тогда как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 10:16 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Ramzay_Скажите мне только одно. A что средствами СУБД это нельзя сделать? Можно, н о это в ряде случаев неудобно и очень платформозависимо. Проще сабж разрулить программно. Сделать список заблокированных записей. Кто первый начнет редактирование, тот создает в списке запись, кто опоздал (запись уже есть) - просто читает, не редактируя. Можно наворотить сложный механизм - логгирование, оповещение и т.д. под кокретные нужды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:00 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Прям как в Оракле :) (Select * from Table where id=1 for update) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 12:00 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
To LSV - и еще надо написать нормальный менеджер этого дела,потому как после того,как пользователи в процессе работы начнут отваливаться,то записи в журнале будут оставаться записи,кот надо грамотно удалять. Ramzay: если поискать по ключевому слову Блокировка,то можно найти много описанных механизмов с менеджерами. p.s.мы в ряде случаев потребляем select for update (но он снимается по commit,либо dbms_lock - он снимается когда нам надо и убивается сам при отключении пользователя от бд,что очень удобно-но это Oracle но я думаю у sybase есть аналоги) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 12:03 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
ShtockПрям как в Оракле :) (Select * from Table where id=1 for update) Да, за исключением маленького пустяка. Ежели я пишу: Код: plaintext Если я пытаюсь организовать транзакцию: Код: plaintext 1. LSV в ряде случаев неудобно и очень платформозависимо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 16:44 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
Ramzay_Есть таблица. Пользователь становиться на запись и нажимает кнопку "Редактировать". и идет пить пиво. Чтобы не висела транзакция БД авторвезде красной нитью проходит мысль, что нужно иметь в таблице некое поле, в которое записывается блокирована запись или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 19:14 |
|
||
|
Как правильно организовать изменение данных
|
|||
|---|---|---|---|
|
#18+
"Да, за исключением маленького пустяка. Ежели я пишу:" - собственно в оракле после этого у другого пользователя вывалится ошибка - мол ресурс занят (если указано for update nowait).У нас вопрос разных платформ не стоял,да и у многих он надуман,поэтому такие вещи мы делаем средствами субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:52 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34441217&tid=1544627]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 372ms |

| 0 / 0 |
