Вставить данные из промежуточной таблицы в несколько связанных таблиц? - PullRequest
2 голосов
/ 20 октября 2011

Я работаю над приложением, которое импортирует данные из Access в SQL Server 2008. В настоящее время я использую хранимую процедуру для импорта данных индивидуально по записи. Я не могу выполнить массовую вставку или что-то в этом роде, потому что данные вставляются в две связанные таблицы ... У меня есть несколько полей, которые входят в таблицу Account (имя, фамилия и т. Д.) И три поля каждая из которых будет иметь запись в таблице страхования, связанную с таблицей счетов с помощью автоматически увеличивающегося идентификатора учетной записи, который выбран с помощью SCOPE_IDENTITY в хранимой процедуре.

Производительность не очень хорошая из-за количества обращений к базе данных из приложения. По этой и некоторым другим причинам я планирую вместо этого использовать промежуточную таблицу и импортировать данные оттуда. Читая о моих вариантах приближения к этому, имеет смысл иметь курсор, который выполняет ту же хранимую процедуру вставки для данных в промежуточной таблице. Однако кажется, что курсоры являются воплощением зла, и их следует избегать.

Есть ли способ вставить данные в одну таблицу, извлечь автоматически сгенерированные идентификаторы, а затем вставить данные для тех же записей в другую таблицу, используя соответствующий идентификатор, в операции на основе набора? Или курсор - мой единственный вариант?

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Посмотрите на предложение OUTPUT. Вы должны быть в состоянии добавить его в свой оператор INSERT, чтобы делать то, что вы хотите.

Кстати, если вам нужно вывести во вторую таблицу столбцы, которые не были вставлены в первую, то используйте MERGE вместо INSERT (как предложено в комментарии к исходному вопросу), поскольку его предложение OUTPUT поддерживает ссылки на другие столбцы из исходных таблиц. В противном случае сохранить его с помощью INSERT проще, и он дает вам доступ к вставленному столбцу идентификаторов.

1 голос
/ 08 мая 2012

Я провожу эксперимент по вставке нескольких записей в связанную таблицу с использованием привязки данных. Итак, попробуйте это!

Надеюсь, это очень полезно. Перейдите по этой ссылке Как вставить запись в связанные таблицы . для получения дополнительной информации.

...