|
Обновление DataSet
|
|||
---|---|---|---|
#18+
Подскажите, кто знает. Возникла такая проблема. У меня есть таблица, состоящая из одной строки. Я изменяю значение одной ячейки и хочу записать изменения в БД, а в это время кто-то другой изменил другую ячейку в этой строке. Так вот, как сделать так, чтобы оба изменеия сохранились в БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 11:57 |
|
Обновление DataSet
|
|||
---|---|---|---|
#18+
Структура таблицы? Какую БД используешь? >Так вот, как сделать так, чтобы оба изменеия сохранились в БД? Вариантов несколько. Один из простых использовать хранимой процедуры (если СУБД :-))) позволяет использование хранимых процедур) на которую и возложить столь почетную миссию :-) Однако как же Primary Key в такой ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 12:35 |
|
Обновление DataSet
|
|||
---|---|---|---|
#18+
БД SQL Server, структура таблицы простая, несколько техтовых колонок, несколько с датами. Хотелось бы избежать написания хранимых процедур, потому как я в это не особо понимаю, а как-нибудь по другому. Если нет других вариантов, то как примерно будет выглядеть эта ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 12:47 |
|
Обновление DataSet
|
|||
---|---|---|---|
#18+
Если MS SQL - то используйте хранимые процедуры (совет) Примерно так: 1) В хранимую процедуру передаем значения в столбцах перед изменением (Original, @original_column1, @original_column2) и после (Current , например @current_column1, @current_column2) 2) ищем запись по Original: а) если не находим, то Insert новую запись значениями из Current b) если находим, то Update эту запись значениями из Current Только я не понимаю у вас что в вашей таблице нет PrimaryKey - ведь он бы не дал двух записей с одним первичным ключом? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 13:31 |
|
Обновление DataSet
|
|||
---|---|---|---|
#18+
Есть PrimaryKey. Попробую объяснить подробнее. Моя прога ищет в БД строку по id(он же PrimaryKey) и возвращает ее в виде таблицы с одной строкой. Затем я привязываю databinding каждую ячейку к textboxам интерфейса. Я могу поменять одно значение и сохранить это в БД. Но в это время другой пользователь может выбрать эту запись и тоже в ней что-то изменить. Когда создавал DataAdapter я поставил галку Optymistyc cuncurrency. При попытке обновления соответственно у меня появляется ошибка. А если галку убрать, то перезаписывается строка целиком и соответственно теряюся изменеия другого пользователя. А мне надо, чтобы и мои изменения сохранились и другого пользователя тоже, а если изменили одинаковую ячейку, то записывальсь значения того, кто последний сохранял. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 14:06 |
|
Обновление DataSet
|
|||
---|---|---|---|
#18+
> При попытке обновления соответственно у меня появляется ошибка. А если галку убрать, то перезаписывается строка целиком и соответственно теряюся изменеия другого пользователя. А мне надо, чтобы и мои изменения сохранились и другого пользователя тоже, а если изменили одинаковую ячейку, то записывальсь значения того, кто последний сохранял. Ну правильно, у вас не может быть две записи с одним первичным ключом. Думаю задача здесь должна стоять примерно так: Текущему пользователю надо показать что его запись уже изменилась, и он должен либо: не смотря на это внести изменения (зная что таким образом перетирает чьи то данные), либо отказаться от Update. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 14:38 |
|
|
start [/forum/topic.php?fid=17&msg=32542913&tid=1354113]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
49ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 331ms |
total: | 484ms |
0 / 0 |