47 - Restricción default |
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla, si existe:
if object_id('libros') is not null drop table libros;
Creamos la tabla:
create table libros( codigo int identity, titulo varchar(40), autor varchar(30) default 'Desconocido', editorial varchar(15), precio decimal(6,2) );
Ingresamos algunos registros sin valor para el campo "autor":
insert into libros (titulo,editorial) values('Martin Fierro','Emece'); insert into libros (titulo,editorial) values('Aprenda PHP','Emece');
Veamos que SQL Server creó automáticamente una restricción "default" para el campo "autor":
exec sp_helpconstraint libros;
aparece la siguiente información:
constraint_type constraint_name ... constraint_keys -------------------------------------------------------------------------------- DEFAULT on column autor DF_libros_autor (n/a) ('Desconocido')
La restricción, a la cual no le dimos un nombre, recibe un nombre dado por SQL Server "DF_libros_autor_67C95AEA", que consiste en "DF" (por default), seguido del nombre de la tabla, el nombre del campo y unos números y letras aleatorios.
Vamos a eliminar la tabla y la crearemos nuevamente, sin la cláusula "default":
drop table libros; create table libros( codigo int identity, titulo varchar(40), autor varchar(30), editorial varchar(15), precio decimal(6,2) );
Agregamos una restricción "default" empleando "alter table" para que almacene el valor "Desconocido" en el campo "autor":
alter table libros add constraint DF_libros_autor default 'Desconocido' for autor;
Veamos la restrición agregada anteriormente con el procedimiento almacenado "sp_helpcontraint":
exec sp_helpconstraint libros;
aparece la siguiente información:
constraint_type constraint_name ... constraint_keys --------------------------------------------------------------------------------- DEFAULT on column autor DF_libros_autor (n/a) ('Desconocido')
Agregamos algunos registros:
insert into libros (titulo,editorial) values('Martin Fierro','Emece'); insert into libros default values;
Veamos cómo se almacenaron los registros sin valor explícito para el campo con restricción "default":
select * from libros;
Agregamos otra restricción "default" para el campo "precio" para que almacene el valor 0 en dicho campo:
alter table libros add constraint DF_libros_precio default 0 for precio;
Veamos la restrición agregada anteriormente con el procedimiento almacenado "sp_helpcontraint":
exec sp_helpconstraint libros;