- Comprender las limitaciones de los datos en columnas NOT NULL
- Anulación de la anulación de datos de columnas existentes
- Alterar la estructura de datos de la columna
- Verificar nulabilidad alterada
Cambiar la estructura de datos de una columna en SQL Server de NULL a NOT NULL , por lo que no se permiten valores no nulos en esa columna, generalmente se realiza mediante el método relativamente simple ALTER TABLE sintaxis para cambiar adecuadamente la columna en cuestión.
En este tutorial, examinaremos las importantes precauciones de seguridad necesarias al modificar existentes datos en una columna, antes de emitir cualquier ALTER comandos que podrían causar daño a la mesa misma.
Comprender las limitaciones de datos en columnas NO NULAS
Antes de realizar cualquier cambio en su tabla, es importante repasar brevemente qué datos pueden (y no pueden) especificarse dentro de una columna existente que desea modificar a NOT NULL , asegurándose de que ninguna fila pueda tener un NULL valor en esa columna.
Lo más crítico, todos los NULL existentes valores dentro de la columna deben actualizarse a un valor no nulo antes de ALTER el comando se puede usar con éxito y la columna se convirtió en NOT NULL . Cualquier intento de establecer la columna en NOT NULL mientras real NULL los datos que quedan en la columna darán como resultado un error y no se producirá ningún cambio.
Anulación de datos de columnas existentes
Para asegurarse de que no haya NULL valores en nuestra columna, usaremos un UPDATE básico comando, aplicable explícitamente a las filas donde el valor es actualmente NULL . Por ejemplo, tenemos una tabla básica de client datos con name , email y phone . Actualmente, algunos de los registros tienen un NULL phone valor, que no queremos permitir:
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
Por lo tanto, podemos insertar un valor predeterminado para todos los phone valores que actualmente son NULL con la siguiente declaración:
UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Ahora nuestro NULL todos los valores han sido reemplazados con el valor que consideramos el 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
Alterar la estructura de datos de la columna
Ahora que no hay NULL valores por más tiempo, podemos emitir nuestro ALTER declaración para actualizar la columna para que todas las adiciones futuras no permitan NULL valores. Dado que estamos alterando el phone columna en este ejemplo, la declaración se verá así:
ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Verificar nulabilidad alterada
Una vez que se realiza la modificación de su columna, es una buena práctica verificar que la columna ya no permita ningún NULL valores ejecutando un simple INSERT prueba e intentando insertar un nuevo registro con NULL valor en la columna alterada:
INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', 'jdoe@domain.com', NULL);
Si todo salió según lo planeado, SQL Server emitirá un error que indica que la columna no permite NULL valores:
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]