- 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 Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 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 Quisque@diamProin.com 1-843-863-2697
2 Flynn Fry velit@senectus.net 0-000-000-0000
3 Wyatt Schmidt nibh.dolor@sit.co.uk 1-950-895-1847
4 Oleg Hill lacinia.vitae.sodales@acrisusMorbi.edu 1-173-344-1578
5 Randall Bullock eu@lacus.net 0-000-000-0000
6 Lamar White ut.sem@risus.com 1-421-757-4907
7 Fuller Hill Vivamus.nisi@tempor.ca 1-178-437-8281
8 Ulysses Boyle sem.mollis.dui@Integeraliquamadipiscing.net 1-535-515-1494
9 Paki Palmer nec@euismod.org 0-000-000-0000
10 Kamal Buchanan sapien.gravida@tellusnonmagna.co.uk 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', 'jdoe@domain.com', 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]