Eu tenho o banco de dados SQL Server e acabei de perceber que posso alterar o tipo de uma das colunas de int
para bool
.
Como posso fazer isso sem perder os dados que já foram inseridos nessa tabela?
Eu tenho o banco de dados SQL Server e acabei de perceber que posso alterar o tipo de uma das colunas de int
para bool
.
Como posso fazer isso sem perder os dados que já foram inseridos nessa tabela?
Respostas:
Você pode fazer isso facilmente usando o seguinte comando. Qualquer valor de 0 será transformado em 0 (BIT = false), qualquer outra coisa será transformada em 1 (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
A outra opção seria criar uma nova coluna do tipo BIT
, preenchê-la da coluna antiga e, quando terminar, solte a coluna antiga e renomeie a nova para o nome antigo. Dessa forma, se algo durante a conversão der errado, você sempre poderá voltar, pois ainda possui todos os dados.
NULL
permanece NULL
, 0
torna False
- se , valores diferentes de zero (1, -1, 1999, -987 ...) tornam-se True
.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Nota: se houver um tamanho de colunas, basta escrever o tamanho também.
Se é uma alteração válida.
você pode alterar a propriedade
Ferramentas -> Opções -> Designers -> Designers de tabela e banco de dados -> Desmarque -> Impedir salvar alterações que exigiram a recriação da tabela.
Agora você pode alterar facilmente o nome da coluna sem recriar a tabela ou perder seus registros.
Por que você acha que vai perder dados? Basta acessar o Management Studio e alterar o tipo de dados. Se o valor existente puder ser convertido em bool (bit), ele fará isso. Em outras palavras, se "1" mapeia para verdadeiro e "0" mapeia para falso em seu campo original, você estará bem.
se você usa T-SQL (MSSQL); você deve tentar este script:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
se você usa MySQL; você deve tentar este script:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
se você usa Oracle; você deve tentar este script:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
Vá para Tool-Option-designers-Table e Designers de banco de dados e desmarque a opção Impedir salvar
Altere o tipo de dados da coluna com o tipo de verificação da coluna:
IF EXISTS(
SELECT 1
FROM sys.columns
WHERE NAME = 'YourColumnName'
AND [object_id] = OBJECT_ID('dbo.YourTable')
AND TYPE_NAME(system_type_id) = 'int'
)
ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
pra mim, no sql server 2016, eu faço assim
* Para renomear a coluna Coluna1 para a coluna2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* Para modificar o tipo de coluna de string para int :( Verifique se os dados estão no formato correto )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
Substitua o tipo de dados sem perder dados
alter table tablename modify columnn newdatatype(size);