2010-12-02 4 views
2

Я работаю над «очисткой» базы данных и вам нужно синхронизировать столбцы IDENTITY. Я использую хранимые процедуры для обработки данных и зеркалирования их из одной таблицы в другую (после очистки и исправления типов данных). В какой-то момент в будущем я захочу обрезать старую таблицу и использовать только новую таблицу, мой вопрос заключается в том, как заставить поле IDENTITY оставаться в синхронизации, пока они оба используются ... Как только старая таблица будет удалена, новому нужно будет продолжать автоматически увеличивать и перестраивать/изменять его, чтобы изменить поле IDENTITY, это не вариант. Возможно ли это или есть лучший способ сделать это?SQL несколько таблиц с синхронизированными столбцами IDENTITY

Моя другая мысль заключалась в том, чтобы создать таблицу поиска для хранения столбцов идентификаторов обеих таблиц и в любое время, когда в новой таблице есть вставка, возьмите старый идентификатор и новый идентификатор и вставьте их в таблицу поиска. Это вроде беспорядочно, как только старая таблица не в порядке.

ответ

1
  1. Установите идентификатор новой таблицы как поле не идентичности.
  2. Измените либо ваши процедуры популяции данных, чтобы заполнить поле неидентификации в вашей новой таблице с идентификационным значением старой таблицы.
  3. При переходе переключите новое поле на автоинкремент и set the seed number соответственно.
3

Был там, сделано это. Поместите старый идентификатор в новую таблицу как FK. Отбросьте этот столбец перед тем, как вы уроните старую таблицу.

+0

Мне нравится эта идея (+1). Итак, перед использованием таблицы youR NEW измените тип на поле идентификации? – 2010-12-02 19:14:24

+0

+1 Мне нравится эта идея, однако я забыл упомянуть, что в новую таблицу будут добавлены записи, которые не были бы в старой таблице. Мое решение состоит в том, чтобы изменить поле идентификатора в новой таблице на поле не идентичности и поместить триггер на старую таблицу для заполнения нового. Тогда при перерыве я перейду на идентичность. – jon3laze 2010-12-02 19:28:22