84 - Alterar campos (alter table - alter) |
Hemos visto que "alter table" permite modificar la estructura de una tabla. También podemos utilizarla para modificar campos de una tabla.
La sintaxis básica para modificar un campo existente es la siguiente:
alter table NOMBRETABLA alter column CAMPO NUEVADEFINICION;
Modificamos el campo "titulo" extendiendo su longitud y para que NO admita valores nulos:
alter table libros alter column titulo varchar(40) not null;
En el siguiente ejemplo alteramos el campo "precio" de la tabla "libros" que fue definido "decimal(6,2) not null" para que no acepte valores nulos:
alter table libros alter column precio decimal(6,2) null;
SQL Server tiene algunas excepciones al momento de modificar los campos. No permite modificar:
- campos de tipo text, image, ntext y timestamp.
- un campo que es usado en un campo calculado.
- campos que son parte de índices o tienen restricciones, a menos que el cambio no afecte al índice o a la restricción, por ejemplo, se puede ampliar la longitud de un campo de tipo caracter.
- agregando o quitando el atributo "identity".
- campos que afecten a los datos existentes cuando una tabla contiene registros (ejemplo: un campo contiene valores nulos y se pretende redefinirlo como "not null"; un campo int guarda un valor 300 y se pretende modificarlo a tinyint, etc.).