2011-01-28 5 views
1

У меня есть таблица с 15 миллионами строк. Я хочу добавить столбец идентификатора и сделать его первичным ключом. Проблема в том, что эта таблица всегда перемещается (вставляет, обновляет, удаляет). Можно ли добавить столбец идентичности с этим? Или мне нужно остановить процессы backgroud (это утомительная задача), которая обновляет эту таблицу?Добавить столбец идентификации в существующую таблицу, которая всегда меняется

Благодаря Викрам

+3

Какие СУБД вы используете? –

+0

Стол-замок может быть? – leppie

+0

Извините, я забыл упомянуть. Я использую SQL Server 2005. – Vikram

ответ

1

Учитывая, что у вас есть 15 миллионов строк может занять некоторое нетривиальное количество времени, чтобы выполнить инструкцию ALTER TABLE.

Поскольку SQL Server не предоставляет табличные подсказки для ALTER TABLE, достаточно предположить, что SQL Server принимает блокировку таблицы, когда он выполняет инструкцию ALTER TABLE.

В течение этого времени никакому другому процессу не разрешается выбирать, вставлять, обновлять или удалять, поэтому вам не придется беспокоиться о состоянии гонки с каким-либо другим процессом.

Если процесс занимает достаточно много времени, ваши другие процессы будут испытывать ошибки времени ожидания. В зависимости от того, как написаны процессы, это либо плохо, либо не проблема, но вам нужно понять это. Если бы это был я, я бы отключил их.

Смежные вопросы