У меня есть таблицы Cases
и Degrees
с отношением Cases.CID
- CDegrees.CID
. CID
- это первичный ключ Cases
с автоинкрементностью.Обновление основных/дочерних рядов
Обе таблицы используются в одной форме, и предполагается, что пользователь может добавлять новые записи к обеим таблицам в одно и то же время, а не сохранять целые данные master/child в одном действии GUI.
Так что в наборе данных, где я создал FK, я устанавливал «Ограничение отношения и внешнего ключа» для обеспечения при обновлении новой записи в таблице Cases, полученное значение IDENTITY приведет к обновлению дочерних записей с -1 до значения CID
.
Когда я обновляю адаптер Cases
, он вызывает получение нового значения IDENTITY и каскадного обновления в CDegrees
. Но обновление CDegrees
вызывает сценарий Insert с [CID] = - 1 (исходное значение). Я изменил параметр «Вставить» @CID
из CDegrees
в «Предлагаемую» версию, но это же происходит (см. В SQL Profiler).
На самом деле моя задача намного сложнее, я просто упростил задачу локализации моей проблемы.
Описать более четко. перед обновлением В обоих случаях [Cases] и [CDegrees] есть одна новая запись с [CID] = - 1 после того, как [Cases] обновили оба параметра [Cases] и [CDegrees], имеют новое значение идентификатора CID, только [CDegrees]. [CID ] «Текущее» значение равно -1, а «Предлагаемый» - идентификатор. Но когда я вызываю обновление набора данных [CDegrees], он отправляет команду Insert Command в SQL с [CID] = - 1, независимо от того, что я указал источник параметра @CID в качестве предлагаемого значения [CID].