- Comprendre les limites des données dans les colonnes NOT NULL
- Annuler l'annulation des données de colonne existantes
- Modifier la structure des données de la colonne
- Vérifier la nullité modifiée
Modification de la structure de données d'une colonne dans SQL Server à partir de NULL
à NOT NULL
, interdisant ainsi les valeurs non nulles dans cette colonne, est généralement effectuée à l'aide du relativement simple ALTER TABLE
syntaxe pour modifier de manière appropriée la colonne en question.
Dans ce didacticiel, nous examinerons les précautions de sécurité importantes nécessaires lors de la modification de l'élément existant données dans une colonne, avant d'émettre réellement un ALTER
commandes susceptibles de nuire à la table elle-même.
Comprendre les limites des données dans les colonnes NOT NULL
Avant d'apporter des modifications à votre table, il est important de passer brièvement en revue les données qui peuvent (et ne peuvent pas) être spécifiées dans une colonne existante que vous souhaitez modifier en NOT NULL
, en s'assurant qu'aucune ligne n'est autorisée à avoir un NULL
valeur dans cette colonne.
Plus important encore, tous les NULL
existants les valeurs dans la colonne doivent être mis à jour avec une valeur non nulle avant ALTER
la commande peut être utilisée avec succès et la colonne devient NOT NULL
. Toute tentative de définition de la colonne sur NOT NULL
tandis que le réel NULL
les données restantes dans la colonne entraîneront une erreur et aucun changement ne se produira.
Annuler l'annulation des données de colonne existantes
Pour s'assurer qu'il n'y a pas de NULL
valeurs dans notre colonne, nous utiliserons une UPDATE
de base commande, applicable explicitement aux lignes où la valeur est actuellement NULL
. Par exemple, nous avons une table de base de client
données avec name
, email
, et phone
. Actuellement, quelques-uns des enregistrements ont un NULL
phone
valeur, que nous ne voulons pas autoriser :
clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected]
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected]
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected]
10 Kamal Buchanan [email protected] 1-325-847-4838
Par conséquent, nous pouvons insérer une valeur par défaut pour tous les phone
valeurs qui sont actuellement NULL
avec la déclaration suivante :
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Maintenant notre NULL
les valeurs ont toutes été remplacées par la valeur que nous considérons comme la valeur default
, 0-000-000-0000
:
clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected] 0-000-000-0000
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected] 0-000-000-0000
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected] 0-000-000-0000
10 Kamal Buchanan [email protected] 1-325-847-4838
Modifier la structure des données de la colonne
Maintenant qu'il n'y a plus de NULL
plus de valeurs, nous pouvons émettre notre ALTER
déclaration pour mettre à jour la colonne afin que tous les ajouts futurs n'autorisent pas NULL
valeurs. Puisque nous modifions le phone
colonne dans cet exemple, l'instruction ressemblera à ceci :
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Vérifier la nullité modifiée
Une fois la modification de votre colonne effectuée, il est recommandé de vérifier que la colonne n'autorise plus aucun NULL
valeurs en exécutant un simple INSERT
test et essaie d'insérer un nouvel enregistrement avec le NULL
valeur dans la colonne modifiée :
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', '[email protected]', NULL);
Si tout s'est déroulé comme prévu, SQL Server émettra une erreur indiquant que la colonne n'autorise pas NULL
valeurs :
Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]