Ajouter une colonne avec une valeur par défaut à une table dans SQL Server
Comment une colonne avec une valeur par défaut s'ajouter à une table existante dans SQL Server 2000 /SQL Server 2005?
- et ce aussi bien w3schools.com/sql/sql_alter.asp
Vous devez vous connecter pour publier un commentaire.
Syntaxe:
Exemple:
Notes:
Facultatif Nom De La Contrainte:
Si vous laissez de côté
CONSTRAINT D_SomeTable_SomeCol
SQL Serveur va générer automatiquementun par Défaut-Contrainte avec un drôle de Nom comme:
DF__SomeTa__SomeC__4FB7FEF6
En Option Avec-La Déclaration De Valeurs De:
Le
WITH VALUES
est uniquement nécessaire lors de votre Colonne est Nullableet vous voulez que la Valeur par Défaut utilisée pour les Enregistrements Existants.
Si votre Colonne est
NOT NULL
, alors il sera automatiquement utiliser la Valeur par Défautpour tous les Dossiers Existants, si vous spécifiez
WITH VALUES
ou pas.Comment Inserts de travailler avec une valeur par Défaut-Contrainte:
Si vous insérez un Enregistrement dans
SomeTable
et ne pas SpécifierSomeCol
's de la valeur, alors il sera par Défaut à0
.Si vous insérez un Enregistrement et Spécifier
SomeCol
's valeurNULL
(et votre colonne permet à null),alors la valeur par Défaut-Contrainte de pas être utilisé et
NULL
sera inséré en tant que Valeur.Notes étaient basées sur toutes les excellents commentaires ci-dessous.
Un Merci spécial à:
@Yatrix, @WalterStabosz, @YahooSerious, et @StackMan pour leurs Commentaires.
NOT NULL
. Veuillez essayer ceci:create table blah(a int not null primary key clustered); insert blah values (1), (2); alter table blah add b int null constraint df_blah_b default (0); select * from blah;
Vous verrez 2 valeurs NULL pour les colonnesb
.NOT NULL
avec unDEFAULT
valeur. Puis, avec une deuxième requête, de rendre la colonne nullable. Le problème est résolu. 1ère requête ajoute vos valeurs par défaut. 2ème permet de autorise les valeurs null dans le futur.WITH VALUES
pour mettre à jour les nullable lignes. Voir MSDN: "Si l'ajout de la colonne accepte les valeurs null etWITH VALUES
est spécifié, la valeur par défaut est stocké dans la nouvelle colonne est ajoutée aux lignes existantes."L'inclusion de la par DÉFAUT remplit la colonne dans existant lignes avec la valeur par défaut, de sorte que la contrainte not NULL n'est pas violé.
Lors de l'ajout d'un colonne nullable,
WITH VALUES
permettra de s'assurer que la valeur par DÉFAUT est appliquée aux lignes existantes:DEFAULT
contrainte aura toujours une valeur - c'est pas NULLE, même siNOT NULL
n'est pas spécifiée.BIT
type de données, je parlais à propos de ce particulierBIT
colonne. Regardez la réponse, la colonne est déclarée commeNOT NULL
.GO
qui ajoute une contrainte à une colonne existante.Méfiez-vous lors de la colonne que vous ajoutez a une
NOT NULL
contrainte, mais ne dispose pas d'unDEFAULT
contrainte (valeur). LeALTER TABLE
instruction échoue dans ce cas, si la table a des lignes en elle. La solution est de supprimer laNOT NULL
contrainte de la nouvelle colonne, ou de fournir uneDEFAULT
contrainte pour elle.La plupart des version de base avec deux lignes seulement
Utilisation:
Si vous souhaitez ajouter plusieurs colonnes, vous pouvez le faire de cette manière par exemple:
Utilisation:
Référence: ALTER TABLE (Transact-SQL) (MSDN)
Vous pouvez faire la chose avec T-SQL de la manière suivante.
Ainsi que vous pouvez utiliser SQL Server Management Studio aussi par clic-droit sur la table dans le menu, réglage de la valeur par défaut à la table.
Et de plus, si vous voulez ajouter la même colonne (si elle n'existe pas) pour toutes les tables dans la base de données, puis utiliser:
Dans SQL Server 2008 R2, je vais à la conception de la mode dans une base de données de test et ajouter mes deux colonnes à l'aide de la designer et les réglages effectués avec le GUI, et puis l'infâme Cliquez donne l'option "Générer des Changements de Script"!
Bang jusqu'ouvre un peu la fenêtre, vous l'avez deviné, la mise en forme correctement garanti au travail script de modification. Frapper le bouton facile.
Pour ajouter une colonne à une table de base de données avec une valeur par défaut, on peut utiliser:
Voici une autre façon d'ajouter une colonne à une table de base de données avec une valeur par défaut.
Beaucoup plus approfondie script SQL pour ajouter une colonne avec une valeur par défaut est ci-dessous, y compris la vérification si la colonne existe avant de l'ajouter également l'arrivée de la contrainte et de le supprimer si il y en a un. Ce script aussi les noms de la contrainte afin que nous puissions avoir une belle convention de nommage (j'aime DF_) et si pas de SQL va nous donner une contrainte avec un nom qui a un numéro généré de manière aléatoire; il est donc agréable d'être en mesure de le nom de la contrainte de trop.
Ce sont deux façons d'ajouter une colonne à une table de base de données avec une valeur par défaut.
Alternativement, vous pouvez ajouter une valeur par défaut sans avoir explicitement le nom de la contrainte:
Si vous avez un problème avec l'existant contraintes par défaut lors de la création de cette contrainte, alors qu'ils peuvent être enlevés par:
L'article MSDN ALTER TABLE (Transact-SQL) a tous de la syntaxe alter table.
Cela peut être fait dans les SSM GUI ainsi. Je fais preuve d'une date par défaut ci-dessous, mais la valeur par défaut peut être que ce soit, bien sûr.
explorer->Design)
il existe déjà)
(getdate())
ouabc
ou0
ou quelle que soit la valeur que vous voulez dans Valeur par Défaut ou la Liaison champ comme sur la photo ci-dessous:Exemple:
Exemple:
D'abord créer une table avec le nom de l'étudiant:
Ajouter une colonne à elle:
La table est créée et d'une colonne est ajoutée à une table existante avec une valeur par défaut.
SQL Server + Alter Table + Ajouter une Colonne + Valeur par Défaut de type uniqueidentifier
NOT EXISTS
vérifier avant de tenter de modifier la table. Très bonne solution. Certains des commentaires supplémentaires sur la façon dont cela fonctionne, la rendrait encore plus utile.Essayer cette
Cela a beaucoup de réponses, mais je ressens le besoin d'ajouter cette extension de la méthode. Cela semble beaucoup plus longtemps, mais il est extrêmement utile si vous êtes en train d'ajouter une valeur NON NULL champ à une table avec des millions de lignes dans une base de données active.
Ce que cela va faire est d'ajouter la colonne comme un nullable champ et avec la valeur par défaut, mise à jour tous les champs de la valeur par défaut (ou vous pouvez affecter des valeurs plus explicites), et enfin il va changer la colonne de ne PAS être NULL.
La raison pour cela est si vous mettez à jour une grande échelle, table et ajouter un nouveau pas en champ nul, il doit écrire à chaque ligne unique et, par les présentes, et verrouiller l'ensemble de la table, car il ajoute de la colonne et écrit toutes les valeurs.
Cette méthode permettra d'ajouter la colonne nullable qui fonctionne beaucoup plus rapidement par lui-même, puis remplit les données avant de les not null état.
J'ai constaté que le fait de la chose entière dans une déclaration de lock-out, l'un de nos plus actifs tables pour les 4 à 8 minutes, et très souvent, j'ai tué le processus. Cette méthode chaque partie ne prend généralement que quelques secondes et entraîne un minimum de verrouillage.
En outre, si vous avez une table dans la zone de milliards de lignes, il peut être intéressant de dosage, la mise à jour comme suit:
Ajouter une nouvelle colonne à une table:
Par exemple,
Si l'utilisateur veut faire de l'auto incrémenté puis:
Cela peut être fait par le code ci-dessous.
À partir de cette requête, vous pouvez ajouter une colonne de type de données entier avec la valeur par défaut de 0.
C'est pour SQL Server:
Exemple:
Si vous souhaitez ajouter des contraintes alors:
Bien, j'ai maintenant quelques modifications à ma réponse précédente. J'ai remarqué qu'aucune des réponses mentionnées
IF NOT EXISTS
. Donc, je vais vous fournir une nouvelle solution d'elle que j'ai été confronté à quelques problèmes modifiant la table.Ici
TaskSheet
le nom de la table etIsBilledToClient
est la nouvelle colonne qui vous allez insérer et1
la valeur par défaut. Cela signifie que dans la nouvelle colonne de ce que sera la valeur des lignes existantes, donc on sera définie automatiquement là. Toutefois, vous pouvez modifier comme vous le souhaitez avec le respect de la colonne type, comme je l'ai utiliséeBIT
, j'ai donc mis en valeur par défaut 1.Je suggère que le système ci-dessus, parce que j'ai été confronté à un problème. Quel est donc le problème? Le problème est que, si les
IsBilledToClient
colonne n'existe dans la table table, alors si vous exécutez uniquement la portion de code donné ci-dessous, vous verrez une erreur dans SQL server Query builder. Mais si elle n'existe pas, alors pour la première fois il n'y aura pas d'erreur lors de l'exécution.SQL Server + Alter Table + Ajouter une Colonne + Valeur par Défaut de type uniqueidentifier...
Si la valeur par défaut est Null, alors:
New Column
Select Type
, et Cochez la Case à cocher Autoriser les valeurs NullSave
Fait!
Vous pouvez utiliser cette requête:
Clic droit sur le tableau et cliquez sur le Design, cliquez sur dans la dernière colonne nom et entrez le Nom de Colonne, le Type de Données, Autoriser les valeurs Null.
Puis en bas de page définir une valeur par défaut ou la reliure : comme quelque chose de " 1 " pour la chaîne ou 1 int.
étape-1. VOUS devez D'ABORD MODIFIER la TABLE À AJOUTER un CHAMP
étape 2 CRÉER par DÉFAUT
étape 3 ENSUITE, VOUS devez EXÉCUTER CETTE PROCÉDURE
exemple -
OU
Essayer avec la requête ci-dessous:
Cela va ajouter une nouvelle colonne dans la Table.