2 votes

Créer une colonne et lui attribuer une valeur par défaut

Bonjour J'ai une colonne dans ma table qui est de type bit, et je vais exécuter un script pour de nombreuses bases de données qui vérifie si elle existe si c'est le cas j'ai besoin de la modifier et d'ajouter une colonne et de mettre par défaut la valeur de son bit à 1.

J'ai essayé ce qui suit, mais lorsque la colonne a été créée, elle affiche toujours NULL.

ALTER TABLE [myTable] ADD [ShippingOption] [bit] NULL DEFAULT 1

Merci de votre attention.

4voto

Martin Smith Points 174101

Il suffit d'utiliser WITH VALUES pour que la nouvelle colonne prenne la place de default plutôt que la valeur NULL

ALTER TABLE [myTable]
ADD [ShippingOption] [bit] NULL DEFAULT 1 WITH VALUES;

Cette opération n'est pas nécessaire si la colonne nouvellement ajoutée est marquée comme NOT NULL . Dans ce cas, la valeur par défaut sera appliquée automatiquement.

1voto

DeCaf Points 2990

Lorsqu'une contrainte par défaut est appliquée à une colonne nullable, comme dans ce cas, la valeur par défaut n'est appliquée que lors des insertions lorsque le nom de la colonne est exclu de la liste.

Normalement, cela ne s'applique pas lorsque vous créez le champ. Edita: Toutefois, comme l'a souligné Martin, il est possible d'obtenir l'effet désiré en ajoutant WITH VALUES .

0voto

p.campbell Points 42771

Il semble que vous ayez créé la colonne avec la valeur par défaut. Toutes les insertions futures utiliseront cette valeur par défaut si elle n'est pas spécifiée.

Vous dites "il montre toujours NULL ". Vous devrez mettre à jour les enregistrements existants :

UPDATE myTable
SET ShippingOption = 1
WHERE ShippingOption IS NULL;

La raison pour laquelle votre défaut ne s'est pas appliqué : votre colonne est toujours nullable. Lors de la création, la valeur par défaut ne devait donc pas être appliquée.

Vous pouvez également spécifier que la colonne doit être NOT NULL dans votre ALTER déclaration. Cela garantirait l'application de votre défaut sans que vous ayez à émettre une UPDATE ainsi que la garantie que toute déclaration exige une valeur non nulle lors de l'insertion :

ALTER TABLE [MyTable] ADD [ShippingOption] [bit] NOT NULL DEFAULT 1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X