Comment supprimer une colonne d'une table existante?
J'ai une table MEN
avec Fname
etLname
Je dois retirer le Lname
Comment faire?
sql-server
Gali
la source
la source
Réponses:
la source
Générique:
Dans ton cas:
la source
Votre exemple est simple et ne nécessite aucune modification de table supplémentaire, mais en règle générale, ce n'est pas si trivial.
Si cette colonne est référencée par d'autres tables, vous devez déterminer quoi faire avec les autres tables / colonnes. Une option consiste à supprimer les clés étrangères et à conserver les données référencées dans d'autres tables.
Une autre option consiste à rechercher toutes les colonnes de référence et à les supprimer également si elles ne sont plus nécessaires.
Dans de tels cas, le véritable défi consiste à trouver toutes les clés étrangères. Vous pouvez le faire en interrogeant les tables système ou en utilisant des outils tiers tels que ApexSQL Search (gratuit) ou Red Gate Dependency tracker (premium mais plus de fonctionnalités). Il y a tout un fil sur les clés étrangères ici
la source
Voici la bonne réponse:
Mais ... si un
CONSTRAINT
existe sur leCOLUMN
, alors vous devezDROP
leCONSTRAINT
premier, alors vous pourrezDROP
leCOLUMN
. Pour supprimer unCONSTRAINT
, exécutez:la source
constraint
une colonne ?Dans SQL Server 2016, vous pouvez utiliser de nouvelles instructions DIE.
La requête ci-dessus est réexécutable dans
drops
la colonne uniquement si elle estexists
dans la table, sinon elle ne générera pas d'erreur.Au lieu d'utiliser de gros
IF
wrappers pour vérifier l'existence decolumn
avant de le supprimer, vous pouvez simplement exécuter l'DDL
instruction ci-dessusla source
La question est, pouvez-vous seulement supprimer une colonne d'une table inexistante ;-)
la source
La réponse simple à cela est d'utiliser ceci:
Plusieurs colonnes peuvent être spécifiées comme ceci:
À partir de SQL Server 2016, il est également possible de supprimer la colonne uniquement si elle existe. Cela vous empêche d'obtenir une erreur lorsque la colonne n'existe pas, ce qui ne vous intéresse probablement pas.
Il existe certaines conditions préalables à la suppression de colonnes. Les colonnes supprimées ne peuvent pas être:
Si l'une des réponses ci-dessus est vraie, vous devez d'abord supprimer ces associations.
En outre, il convient de noter que la suppression d'une colonne ne récupère pas l'espace du disque dur jusqu'à ce que l'index cluster de la table soit reconstruit. En tant que tel, c'est souvent une bonne idée de suivre ce qui précède avec une commande de reconstruction de table comme celle-ci:
Enfin, comme certains l'ont dit, cela peut être lent et bloquera probablement la table pour la durée. Il est possible de créer une nouvelle table avec la structure souhaitée puis de renommer comme ceci:
Mais soyez averti qu'il y a une fenêtre pour la perte de données des lignes insérées ici entre la première sélection et la dernière commande de renommage.
la source
Pour ajouter des colonnes dans une table existante:
Pour supprimer des colonnes dans une table existante:
la source
Cela peut également être fait via l'interface graphique SSMS. La bonne chose à propos de cette méthode est qu'elle vous avertit s'il existe des relations sur cette colonne et peut également les supprimer automatiquement.
Comme je l'ai déjà dit, s'il existe des relations qui devraient également être supprimées, il vous demandera à ce stade si vous souhaitez également les supprimer. Vous devrez probablement le faire pour supprimer la colonne.
la source
Si vous utilisez C # et que la colonne Identité est int, créez une nouvelle instance de int sans lui fournir de valeur. Cela a fonctionné pour moi.
la source
Syntaxe:
Par exemple:
la source