47 - Restricción default |
La restricción "default" especifica un valor por defecto para un campo cuando no se inserta explícitamente en un comando "insert".
Anteriormente, para establecer un valor por defecto para un campo empleábamos la cláusula "default" al crear la tabla, por ejemplo:
create table libros( ... autor varchar(30) default 'Desconocido', ... );
Cada vez que establecíamos un valor por defecto para un campo de una tabla, SQL Server creaba automáticamente una restricción "default" para ese campo de esa tabla.
Dicha restricción, a la cual no le dábamos un nombre, recibía un nombre dado por SQL Server que consiste "DF" (por default), seguido del nombre de la tabla, el nombre del campo y letras y números aleatorios.
Podemos agregar una restricción "default" a una tabla existente con la sintaxis básica siguiente:
alter table NOMBRETABLA add constraint NOMBRECONSTRAINT default VALORPORDEFECTO for CAMPO;
En la sentencia siguiente agregamos una restricción "default" al campo autor de la tabla existente "libros", que almacena el valor "Desconocido" en dicho campo si no ingresamos un valor en un "insert":
alter table libros add constraint DF_libros_autor default 'Desconocido' for autor;
Por convención, cuando demos el nombre a las restricciones "default" emplearemos un formato similar al que le da SQL Server: "DF_NOMBRETABLA_NOMBRECAMPO".
Solamente se permite una restricción "default" por campo y no se puede emplear junto con la propiedad "identity". Una tabla puede tener varias restricciones "default" para sus distintos campos.
La restricción "default" acepta valores tomados de funciones del sistema, por ejemplo, podemos establecer que el valor por defecto de un campo de tipo datetime sea "getdate()".
Podemos ver información referente a las restriciones de una tabla con el procedimiento almacenado "sp_helpcontraint":
sp_helpconstraint libros;
aparecen varias columnas con la siguiente información:
- constraint_type: el tipo de restricción y sobre qué campo está establecida (DEFAULT on column autor), - constraint_name: el nombre de la restricción (DF_libros_autor), - delete_action y update_action: no tienen valores para este tipo de restricción. - status_enabled y status_for_replication: no tienen valores para este tipo de restricción. - constraint_keys: el valor por defecto (Desconocido).
Entonces, la restricción "default" especifica un valor por defecto para un campo cuando no se inserta explícitamente en un "insert", se puede establecer uno por campo y no se puede emplear junto con la propiedad "identity".