47 - Restricción default


Primer problema:
Un comercio que tiene un stand en una feria registra en una tabla llamada "visitantes" algunos datos 
de las personas que visitan o compran en su stand para luego enviarle publicidad de sus productos.
1- Elimine la tabla "visitantes", si existe:
 if object_id('visitantes') is not null
  drop table visitantes;

2- Cree la tabla con la siguiente estructura:
 create table visitantes(
  numero int identity,
  nombre varchar(30),
  edad tinyint,
  domicilio varchar(30),
  ciudad varchar(20),
  montocompra decimal (6,2) not null
 );

3- Defina una restricción "default" para el campo "ciudad" que almacene el valor "Cordoba" en caso 
de no ingresar valor para dicho campo:
 alter table visitantes
  add constraint DF_visitantes_ciudad
  default 'Cordoba'
  for ciudad;

4- Defina una restricción "default" para el campo "montocompra" que almacene el valor "0" en caso de 
no ingresar valor para dicho campo:
 alter table visitantes
  add constraint DF_visitantes_montocompra
  default 0
  for montocompra;

5- Ingrese algunos registros sin valor para los campos con restricción "default":
 insert into visitantes
  values ('Susana Molina',35,'Colon 123',default,59.80);
 insert into visitantes (nombre,edad,domicilio)
  values ('Marcos Torres',29,'Carlos Paz');
 insert into visitantes
  values ('Mariana Juarez',45,'Carlos Paz',null,23.90);

6- Vea cómo se almacenaron los registros:
 select * from visitantes;

7- Vea las restricciones creadas anteriormente.
aparecen dos filas, una por cada restricción.

8- Intente agregar otra restricción "default" al campo "ciudad".
Aparece un mensaje de error indicando que el campo ya tiene una restricción "default" y sabemos 
que no puede establecerse más de una restricción "default" por campo.

9- Intente establecer una restricción "default" al campo "identity".
No se permite.
Ver solución

 if object_id('visitantes') is not null
  drop table visitantes;

 create table visitantes(
  numero int identity,
  nombre varchar(30),
  edad tinyint,
  domicilio varchar(30),
  ciudad varchar(20),
  montocompra decimal (6,2) not null
 );

 alter table visitantes
  add constraint DF_visitantes_ciudad
  default 'Cordoba'
  for ciudad;

 alter table visitantes
  add constraint DF_visitantes_montocompra
  default 0
  for montocompra;

 insert into visitantes
  values ('Susana Molina',35,'Colon 123',default,59.80);
 insert into visitantes (nombre,edad,domicilio)
  values ('Marcos Torres',29,'Carlos Paz');
 insert into visitantes
  values ('Mariana Juarez',45,'Carlos Paz',null,23.90);

 select * from visitantes;

 exec sp_helpconstraint visitantes;

 alter table visitantes
  add constraint DF_visitantes_ciudad
  default 'Cordoba'
  for ciudad;

 alter table visitantes
  add constraint DF_visitantes_numero
  default 0
  for numero;



 

Segundo problema:
Una playa de estacionamiento almacena cada día los datos de los vehículos que ingresan en la tabla 
llamada "vehiculos".
1- Elimine la tabla, si existe:
 if object_id('vehiculos') is not null
  drop table vehiculos;

2- Cree la tabla:
 create table vehiculos(
  patente char(6) not null,
  tipo char(1),--'a'=auto, 'm'=moto
  horallegada datetime,
  horasalida datetime
 );

3- Establezca una restricción "default" para el campo "tipo" que almacene el valor "a" en caso de no 
ingresarse valor para dicho campo.

4- Ingrese un registro sin valor para el campo "tipo":
 insert into vehiculos values('BVB111',default,default,null);

5- Recupere los registros:
 select * from vehiculos;

6- Intente establecer otra restricción "default" para el campo "tipo" que almacene el valor "m" en 
caso de no ingresarse valor para dicho campo.
No lo permite porque un campo solamente admite una restricción "default" y ya tiene una.

7- Establezca una restricción "default" para el campo "horallegada" que almacene la fecha y hora del 
sistema.

8- Ingrese un registro sin valor para los campos de tipo datetime.

9- Recupere los registros:
 select * from vehiculos;

10- Vea las restricciones.
2 restricciones.

Ver solución
 if object_id('vehiculos') is not null
  drop table vehiculos;

 create table vehiculos(
  patente char(6) not null,
  tipo char(1),--'a'=auto, 'm'=moto
  horallegada datetime,
  horasalida datetime
 );

 alter table vehiculos
  add constraint DF_vehiculos_tipo
  default 'a'
  for tipo;

 insert into vehiculos values('BVB111',default,default,null);

 select * from vehiculos;

 alter table vehiculos
  add constraint DF_vehiculos_tipo2
  default 'm'
  for tipo;

 alter table vehiculos
  add constraint DF_vehiculos_horallegada
  default getdate()
  for horallegada;

 insert into vehiculos (patente,tipo) values('CAA258','a');

 select * from vehiculos;

 exec sp_helpconstraint vehiculos;

Retornar