Как изменить тип данных столбца в базе данных SQL без потери данных
у меня есть база данных SQL Server, и я только что понял, что могу изменить тип одного из столбцов из int
до bool
.
Как я могу сделать это без потери данных, которые уже вступили в эту таблицу?
9 ответов:
вы можете легко сделать это с помощью следующей команды. Любое значение 0 будет превращено в 0 (бит = false), все остальное будет превращено в 1 (бит = true).
ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
другой вариант-создать новый столбец типа
BIT
, заполните его из старого столбца, и как только вы закончите, удалите старый столбец и переименуйте новый в старое имя. Таким образом, если что-то во время преобразования пойдет не так, вы всегда можете вернуться, так как у вас все еще есть все данные..
Если это допустимое изменение.
вы можете изменить свойство.
Инструменты -- > Параметры -- > конструкторы -- > конструкторы таблиц и баз данных -- > снимите флажок -- > запретить сохранение изменений, требующих повторного создания таблицы.
теперь вы можете легко изменить имя столбца без повторного создания таблицы или потери записей u r.
ALTER TABLE tablename ALTER COLUMN columnname columndatatype(size)
Примечание: если есть размер столбцов, просто напишите размер также.
Почему вы думаете, что вы потеряете данные? Просто зайдите в Management Studio и измените тип данных. Если существующее значение может быть преобразовано в bool (бит), это будет сделано. Другими словами, если "1" соответствует true и "0" соответствует false в исходном поле, вы будете в порядке.
Если вы используете T-SQL (MSSQL); вы должны попробовать этот скрипт:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
Если вы используете MySQL, вы должны попробовать этот скрипт:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
Если вы используете Oracle, вы должны попробовать этот скрипт:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
в compact edition будет автоматически принимать размер для типа данных datetime т. е. (8) поэтому нет необходимости устанавливать размер поля и генерировать ошибку для этой операции...