
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.09.2007, 21:19
|
|||
|---|---|---|---|
|
|||
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
Доброго всем времени суток. Подскажите пожалуйста, каким образом можно вставить значения в ключевой столбец с установленным autoincrement = true. Есть таблица в базе Sql Server с ключевым полем установленным в автоинкремент. Есть другие таблицы, которые ссылаются на первую. Проект пишу на C# 2.0. Создал DataSet со всеми таблицами. В процессе работы создаю главную строку для вставки в первую таблицы и несколько строк которые ссылаються на главную. Пока DataSet работает автономно, проблем нет. Проблемы начинаются с обновление БД. Генерируется исключение о невозможности вставки данных в столбец UNIQUE. Насколько я понял, DataSet сам инкрементирует значение для следующей строки и все строки ссылающиеся на нее привязываются к сгенерированному идентификатору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2007, 21:22
|
|||
|---|---|---|---|
|
|||
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
Нашел следующий выход. В БД отключил автоинкремент, в DataSet оставил. Следовательно строки вставляются в БД без проблем, но возникает следующий вопрос. А как будет работать подобная схема в многопользовательском режиме? Думаю с очень большими проблемами. Помогите, пожалуйста, найти выход из этой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2007, 10:50
|
|||
|---|---|---|---|
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
Выход в принципе стандартный - исключить из инструкции INSERT - ключевой столбец. Он сгенерируется SQL server. А получить его можно (функция после точки с запятой возвращает последний сгенерированный автоинкремент): Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2007, 21:12
|
|||
|---|---|---|---|
|
|||
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
В принципе так и поступал при вставке одной записи. Но меня беспокоит другой вопрос. Есть таблица MainTable, есть таблица ChildTable. ChildTable имеет внешний ключ ссылаюшийся на первичный ключ таблицы MainTable. Первичный ключ в MainTable имеет автоинкремент. Когда среда VS2005 генерирует SQL код для вставки новых строк, по какому принципу она устанавливает связи между строками? Т.е. Код: plaintext 1. 2. 3. Если воспользоваться Вашим советом Витал, не получиться ли следующей ситуации: строка в MainTable вставляеться с id 101, а строка в ChildTable ссылается на строку с id 100 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2007, 22:48
|
|||
|---|---|---|---|
|
|||
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
http://admin.oreillynet.com/catalog/adonetckbk/ 4-я глава. Имеется русский перевод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2007, 09:55
|
|||
|---|---|---|---|
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
Если в датасете прописаны внешние ключи и каскадные изменения - то не о чем беспокоиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2007, 23:54
|
|||
|---|---|---|---|
|
|||
Вставка данных в ключевой столбец с автоинкрементом |
|||
|
#18+
Если не сложно чуть подробнее про каскадное обновление в DataSet. Есть отличия от SQL Server? И как ведут себя строки при вставке в БД? По какому принципу осуществляется связь между строками? Как реализован механизм привязки к идентификатору который может измениться при вставке в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&tablet=1&tid=1352637]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
102ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 410ms |

| 0 / 0 |
