- 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 [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
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 [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
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', '[email protected]', 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]