T-SQL: разбиение таблицы OTLT на отношения многие ко многим
У меня есть приложение сущности платформы. Существует таблица, которая начинает вызывать много проблем, в основном потому, что она не следует соглашениям EF:
Два важных столбца RequestType
а также RequestDetailId
, Каждый тип запроса имеет свой собственный столбец идентификации. Поскольку эти идентичности могут перекрываться между таблицами, существует RequestType
поле для уникальной привязки утверждения к запросу.
Я планирую заменить эту "одну таблицу истинного поиска" на Approval
таблица и отдельная таблица "многие ко многим" для каждой таблицы запросов, связывающая запрос с утверждением:
У меня есть пара запросов, уже указывающих на эту новую таблицу утверждения, и мне нравится, как она работает в EF. Тем не менее, мне трудно перейти от старой таблицы к новым таблицам. До сих пор я просматривал старые данные с помощью курсора, вставляя в новые Approval
таблица и используя личность (SELECT SCOPE_IDENTITY()
) вставить в таблицу "многие ко многим". Мне нужен курсор, потому что мне нужно отслеживать значение идентификатора утверждения для каждой новой записи подтверждения, чтобы я мог заполнить его таблицей "многие ко многим".
Мне было любопытно, если бы кто-то знал, как сделать две вставки без курсора. Курсоры в порядке, но их трудно читать.
Одна мысль заключалась в том, чтобы временно добавить поле идентификатора запроса в Approval
таблицу, вставляя утверждение с идентификатором запроса, а затем соединяя эту информацию со старой таблицей, чтобы заполнить таблицу "многие ко многим". После двух вставок я бы опустил столбец идентификатора запроса. Мне не нравится идея добавить столбец идентификатора запроса, который может быть пустым, в существующую таблицу, просто чтобы выполнить миграцию.
Мне было любопытно, если бы кто-нибудь мог придумать способ разделить старую таблицу поиска на новые таблицы утверждения / многие-ко-многим без использования курсора.