J'ai un champ (disons, foo) dans une table dans une base de données SQL Server qui a été défini comme nullable, mais les nouvelles exigences indiquent que ce champ doit être non nul. Quelle est la meilleure façon de mettre à jour ce champ non-null via un script de mise à jour sans supprimer le contenu de la table? J'ai essayé de générer un script à partir de la vue Création, mais échoue pendant l'exécution car le contenu actuel de la table avait des valeurs NULL pour foo. Pire encore, si j'ai ignoré cette erreur, il procède à supprimer tout le contenu de la table!Mise à jour du script pour mettre à jour un champ de table de SQL Server de NULL à non-nul
5
A
Répondre
10
Vous devez définir une valeur sur toutes les lignes avec NULL
dans la colonne NULL
avant de la modifier en NOT NULL
.
-- Clean up the data which won't comply with the schema changes
UPDATE t SET foo = 0 WHERE foo IS NULL
-- Apply the NOT NULL
ALTER TABLE t ALTER COLUMN foo int NOT NULL
-- Add a default for the future if that's what you want
ALTER TABLE t ADD CONSTRAINT t_foo_def DEFAULT 0 FOR foo
0
Vous pouvez définir une valeur par défaut pour le champ non-nullable. Si vous voulez le changer de nullable à non-nullable, vous devez fournir une valeur qui peut être assignée aux lignes avec une valeur nulle dans ce champ.
Questions connexes
- 1. Mettre à jour le panneau de mise à jour
- 2. table SQL problème de mise à jour
- 3. Mise à jour groupée de SQL, un incrément de champ
- 4. déclaration de mise à jour de SQL Server à Oracle
- 5. Mise à jour à AS400 à partir de SQL 2000
- 6. Mise à jour du matlab timer pour mettre à jour le GUIDE gui de matlab?
- 7. Est-il possible de mettre à jour un champ binaire dans SQL Server?
- 8. Mise à jour, contraintes de clé étrangère et null
- 9. de mise à jour à l'aide jquery
- 10. Mise à jour d'une table à partir d'une table temporaire
- 11. Mise à jour efficace de la table MySQL à partir de SQL Server
- 12. linq to sql + table de mise à jour
- 13. Linq à SQL mise à jour partielle?
- 14. Sql Server Ignorer les erreurs de mise à jour
- 15. Syntaxe de mise à jour pour Access
- 16. Ajout de requêtes SQL de mise à jour
- 17. mise à jour SQL une table d'une autre table
- 18. Mise à jour de Nulls
- 19. NHibernate mappings plusieurs-à-un mise à jour table inchangée
- 20. Champ de mise à jour Sqlite s'il contient
- 21. Exécution d'un fichier de commandes pour mettre à jour un champ avec un caractère étrange dans SQL Server DB
- 22. SQL Server - mise à jour d'une table avec les première et dernière lignes d'une autre table
- 23. SQL Server créer/mettre à jour le script de base de données
- 24. Comment mettre à jour un champ avec des données aléatoires?
- 25. Est-il possible de mettre à jour 3 lignes de SQL dans 1 instruction SQL mise à jour
- 26. Comment mettre à jour une table automatiquement?
- 27. Très étrange problème de mise à jour de SQL
- 28. SQL mise à jour de requête
- 29. Impossible de mettre à jour la table de SQL Server avec l'utilitaire BCP
- 30. Mise à jour à l'aide de LINQ to SQL