Я хочу добавить столбец в существующую устаревшую базу данных и написать процедуру, с помощью которой я могу присвоить каждой записи другое значение. Что-то вроде добавления столбца и автоматического создания для него данных.
Например, если я добавлю новый столбец с именем «ID» (номер), я хочу затем инициализировать уникальное значение для каждой записи. Итак, в моем столбце идентификаторов будут записи от say 1 to 1000
.
Как я могу это сделать?
sql
sql-server
Адип Гупта
источник
источник
Ответы:
Это будет зависеть от базы данных, но для SQL Server этого можно добиться следующим образом:
источник
Prevent saving changes that require table re-creation
флажок, снимающий этот флажок, и вы сможете добавить столбец идентификаторов даже с помощью гуй.Было бы полезно, если бы вы опубликовали, какую базу данных SQL вы используете. Для MySQL вам, вероятно, понадобится auto_increment:
Не уверен, что это применяет значения задним числом. Если это не так, вы должны просто иметь возможность перебирать свои значения с помощью хранимой процедуры или в простой программе (пока никто не записывает в базу данных) и использовать
LAST_INSERT_ID()
функцию для генерации значения идентификатора.источник
для оракула вы можете сделать что-то вроде ниже
источник
И эквивалент Postgres (вторая строка обязательна, только если вы хотите, чтобы «id» был ключом):
источник
Просто использование ALTER TABLE должно работать. Добавьте столбец с правильным типом и флагом IDENTITY, и он должен помочь
Ознакомьтесь с этой статьей MSDN http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx о синтаксисе ALTER TABLE
источник
для типа данных UNIQUEIDENTIFIER на сервере sql попробуйте это
Если вы хотите создать первичный ключ из этого столбца, используйте это
источник
Зависит от базы данных, поскольку каждая база данных имеет свой способ добавления порядковых номеров. Я бы изменил таблицу, чтобы добавить столбец, а затем написал сценарий db в groovy / python / etc, чтобы прочитать данные и обновить идентификатор с помощью последовательности. После того, как данные были установлены, я бы добавил в таблицу последовательность, которая начинается после верхнего числа. После установки данных правильно установите первичные ключи.
источник
Если вы не хотите, чтобы ваш новый столбец имел тип
IDENTITY
(автоинкремент), или вы хотите указать порядок, в котором нумеруются ваши строки, вы можете добавить столбец типа,INT NULL
а затем заполнить его следующим образом. В моем примере новый столбец называется MyNewColumn, а существующий столбец первичного ключа для таблицы называется MyPrimaryKey.Это работает в SQL Sever 2005 и более поздних версиях, т.е. версиях, поддерживающих
ROW_NUMBER()
источник