Я получил следующий сценарий,
Есть четыре таблицы COUNTRY, STATE, CITY, STREET
И у меня есть файл excel с записями выше.. возможно, 2000 строк на данный момент.
Я использовал SqlBulkCopy для импорта данных во временную таблицу, давайте назовем таблицу IMPORT.
И я написал один триггер для вставки в таблицу IMPORT, который получает вставленную запись и разбивает страну, штат, город, улицу, а затем вставляет их в соответствующую таблицу.
В этом триггере я должен выполнить некоторую условную проверку, например, если имя COUNTRY уже присутствует, то возвращает COUNTRY_ID, иначе вставьте его и получите новый COUNTRY_ID.
Вышеприведенное работает, если файл Excel имеет только одну строку. После того, как я поместил исходный Excel для импорта, я понял, что следующий оператор в триггере терпит неудачу "выберите страну из INSERTED", потому что sqlbulkcopy заставляет INSERTED иметь более одной записи.
Структура таблицы
СТРАНА
- Country_ID
- Имя страны
ГОСУДАРСТВО
- State_ID
- Country_ID
- State_Name
ГОРОД
- City_ID
- State_ID
- Country_ID
- Название города
УЛИЦА
- Street_ID
- City_ID
- State_ID
- Country_ID
- Название улицы
ИМПОРТИРОВАТЬ
- Имя страны
- State_Name
- Название города
- Название улицы
Итак, могу ли я иметь оператор цикла в триггере, который будет перебирать все записи в INSERTED?
Или как решить эту проблему наилучшим образом?
ПРИМЕЧАНИЕ. Поскольку они уже используют его, у меня нет контроля над структурой этих таблиц и их взаимосвязями.
Заранее спасибо.