Comment changer le type de données de colonne dans la database SQL sans perdre de données

J'ai une database SQL Server et je viens de réaliser que je peux changer le type de l'une des colonnes de int à bool .

Comment puis-je faire cela sans perdre datatables déjà inputs dans cette table?

Vous pouvez facilement le faire en utilisant la command suivante. Toute valeur de 0 sera transformée en 0 (BIT = false), toute autre chose sera transformée en 1 (BIT = true).

 ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT 

L'autre option serait de créer une nouvelle colonne de type BIT , la remplir à partir de l'ancienne colonne, et une fois que vous avez terminé, déposez l'ancienne colonne et renommez la nouvelle à l'ancien nom. De cette façon, si quelque chose se passe mal pendant la conversion, vous pouvez toujours revenir en arrière puisque vous avez toujours toutes datatables.

Si c'est un changement valide.

vous pouvez changer la propriété.

devises -> Options -> Concepteurs -> Concepteurs de tables et de bases de données -> Décocher -> Empêcher les modifications d'logging qui nécessitent la recréation de la table.

Maintenant vous pouvez facilement changer le nom de la colonne sans recréer la table ou perdre vos loggings ur.

Pourquoi pensez-vous que vous allez perdre des données? Allez simplement dans Management Studio et changez le type de données. Si la valeur existante peut être convertie en bool (bit), elle le fera. En d'autres termes, si "1" correspond à "true" et "0" à false dans votre champ d'origine, tout ira bien.

 ALTER TABLE tablename ALTER COLUMN coulumnname columndatatype(size) 

Note: s'il y a une taille de colonnes, il suffit d'écrire la taille aussi.

Aller à l'outil-Option-designers-Concepteurs de tables et de bases de données et décocher Prévenir l'option d'logging entrez la description de l'image ici

si vous utilisez T-SQL (MSSQL); vous devriez essayer ce script:

 ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) 

si vous utilisez MySQL; vous devriez essayer ce script:

 ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5) 

si vous utilisez Oracle; vous devriez essayer ce script:

 ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5) 

En édition compacte prendra la taille automatiquement pour le type de données datetime ie (8) donc pas besoin de définir la taille du champ et de générer des erreurs pour cette opération …

Je peux modifier le type de données du champ table, avec la requête suivante: et aussi dans la database Oracle,

 ALTER TABLE table_name MODIFY column_name datatype; 

Remplacer le type de données sans perdre de données

 alter table tablename modify columnn newdatatype(size);