Je suis tombé sur une vieille table aujourd'hui avec une colonne datetime appelée 'Created' qui autorise les valeurs NULL. Maintenant, je voudrais changer ceci pour qu'il soit NOT NULL, et inclure également une contrainte pour ajouter une valeur par défaut (getdate ()).
Jusqu'à présent, j'ai le script suivant, qui fonctionne très bien à condition d'avoir préalablement nettoyé toutes les valeurs nulles:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
Est-il possible de spécifier également la valeur par défaut dans l'instruction ALTER?
Je pense que vous devrez le faire en trois déclarations distinctes. J'ai regardé autour de moi et tout ce que j'ai vu semble suggérer que vous pouvez le faire si vous ajoutez une colonne, mais pas si vous modifiez une.
ALTER TABLE dbo.MyTable
ADD CONSTRAINT my_Con DEFAULT GETDATE() for created
UPDATE MyTable SET Created = GetDate() where Created IS NULL
ALTER TABLE dbo.MyTable
ALTER COLUMN Created DATETIME NOT NULL
Vous devrez peut-être d'abord mettre à jour tous les enregistrements nuls par rapport à la valeur par défaut, puis utiliser l'instruction alter table.
Update dbo.TableName
Set
Created="01/01/2000"
where Created is NULL
Si son serveur SQL, vous pouvez le faire sur les propriétés de la colonne en mode Création
Essaye ça?:
ALTER TABLE dbo.TableName
ADD CONSTRAINT DF_TableName_ColumnName
DEFAULT '01/01/2000' FOR ColumnName
vous devez exécuter deux requêtes:
One - pour ajouter la valeur par défaut à la colonne requise
ALTER TABLE 'Nom_Table` ADD DEFAULT' valeur 'POUR' Nom_Colonne '
je veux ajouter une valeur par défaut à Column IsDeleted comme ci-dessous:
Exemple: ALTER TABLE [dbo]. [Employés] ADD 0 par défaut pour IsDeleted
Two - pour modifier la valeur de la colonne nullable à not null
ALTER TABLE 'nom_table' ALTER COLUMN 'nom_colonne' 'type_données' NON NULL
je veux faire la colonne IsDeleted comme non nul
ALTER TABLE [dbo]. [Employés] Alter Column IsDeleted BIT NOT NULL