Comment changer le type de données de colonne dans la base de données SQL sans perdre de données
J'ai une base de données 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 le faire sans perdre les données déjà entrées dans cette table?
9 réponses
Vous pouvez facilement le faire en utilisant la commande suivante. Toute valeur de 0 sera transformée en 0 (BIT = false), tout le reste sera transformé 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
, remplir à partir de l'ancienne colonne, et une fois que vous avez terminé, chute de l'ancienne colonne et renommer le nouveau à l'ancien nom. De cette façon, si quelque chose pendant la conversion va mal, vous pouvez toujours revenir en arrière puisque vous avez toujours toutes les données..
S'il s'agit d'une modification valide.
Vous pouvez modifier la propriété.
Outils - > Options - > concepteurs - > concepteurs de tables et de bases de données - > décocher - > empêcher l'enregistrement des modifications nécessitant une recréation de table.
Maintenant, vous pouvez facilement changer le nom de la colonne sans recréer la table ou perdre des enregistrements u r.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Remarque: si la taille des colonnes, il suffit d'écrire la taille aussi.
Pourquoi pensez-vous que vous allez perdre des données? Allez simplement dans Management Studio et modifiez 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.
Allez dans Tool-Option-designers-concepteurs de tables et de bases de données et décochez L'option Empêcher l'enregistrement
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 automatiquement la taille pour le type de données datetime, c'est-à-dire (8), donc pas besoin de définir la taille du champ et de générer une erreur pour cette opération...
Je peux modifier le type de données du champ table, avec la requête suivante: et aussi dans la base de données 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);