
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.08.2007, 14:57
|
|||
|---|---|---|---|
Повторный INSERT |
|||
|
#18+
Процесс: на КПК выполняется cmdSqlServer.ExecuteNonQuery(); на вставку строки в БД процедура на сервере - простая begin tran ... insert ... ... if <условие> commit tran if <условие> rollback tran Проблема в том, что когда на кпк выполняется cmdSqlServer.ExecuteNonQuery(); в этот момент прерывается связь с сервером SqlException.Number = 4060 или = 6 или = 11 При этом в таблицу могут вставиться 2 записи. Т.е. получается что с кпк вызвали два раза cmdSqlServer.ExecuteNonQuery(); Как с этим бороться? Может попробовать использовать транзакцию в SQLCommand? Поможет ли это? ... SqlCommand command = connection.CreateCommand(); SqlTransaction transaction; transaction = connection.BeginTransaction("SampleTransaction"); command.Connection = connection; command.Transaction = transaction; ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.09.2007, 09:45
|
|||
|---|---|---|---|
Повторный INSERT |
|||
|
#18+
Эээ... Ключ сурогатный identity? или пара с ест-нным? (я имею ввиду, что можно проверять существование и вместо втавки проводить например обновление или ничего не делать, а тупо возвращать ID новой-существующей записи.) Хотя да если Вы откроете транзакцию с клиенте, а потом коннект протухнет, то она откатится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&mobile=1&tid=1352628]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 314ms |

| 0 / 0 |
