T-SQL: разбиение таблицы OTLT на отношения многие ко многим

У меня есть приложение сущности платформы. Существует таблица, которая начинает вызывать много проблем, в основном потому, что она не следует соглашениям EF:

старый стол

Два важных столбца RequestType а также RequestDetailId, Каждый тип запроса имеет свой собственный столбец идентификации. Поскольку эти идентичности могут перекрываться между таблицами, существует RequestType поле для уникальной привязки утверждения к запросу.

Я планирую заменить эту "одну таблицу истинного поиска" на Approval таблица и отдельная таблица "многие ко многим" для каждой таблицы запросов, связывающая запрос с утверждением:

новый стол

У меня есть пара запросов, уже указывающих на эту новую таблицу утверждения, и мне нравится, как она работает в EF. Тем не менее, мне трудно перейти от старой таблицы к новым таблицам. До сих пор я просматривал старые данные с помощью курсора, вставляя в новые Approval таблица и используя личность (SELECT SCOPE_IDENTITY()) вставить в таблицу "многие ко многим". Мне нужен курсор, потому что мне нужно отслеживать значение идентификатора утверждения для каждой новой записи подтверждения, чтобы я мог заполнить его таблицей "многие ко многим".

Мне было любопытно, если бы кто-то знал, как сделать две вставки без курсора. Курсоры в порядке, но их трудно читать.

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

Мне было любопытно, если бы кто-нибудь мог придумать способ разделить старую таблицу поиска на новые таблицы утверждения / многие-ко-многим без использования курсора.

0 ответов

Другие вопросы по тегам