58 - Desasociar y eliminar valores predeterminados


Primer problema:
Una librería almacena los datos de sus libros en una tabla llamada "libros".
1- Elimine la tabla si existe:
 if object_id ('libros') is not null
  drop table libros;

2- Recuerde que si elimina una tabla, las asociaciones de reglas y valores predeterminados de sus 
campos desaparecen, pero las reglas y valores predeterminados siguen existiendo. Si intenta crear 
una regla o un valor predeterminado con igual nombre que uno existente, aparecerá un mensaje 
indicándolo, por ello, debe eliminarlos (si existen) para poder crearlos nuevamente:
 if object_id ('VP_cero') is not null
   drop default VP_cero;
 if object_id ('VP_desconocido') is not null
   drop default VP_desconocido;
 if object_id ('RG_positivo') is not null
   drop rule RG_positivo;

3- Cree la tabla:
 create table libros(
  codigo int identity,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(20),
  precio decimal(5,2),
  cantidad smallint
 );

4- Cree una regla para impedir que se ingresen valores negativos, llamada "RG_positivo".

5- Asocie la regla al campo "precio".

6- Asocie la regla al campo "cantidad".

7- Cree un valor predeterminado para que almacene el valor cero, llamado "VP_cero".

8- Asócielo al campo "precio".

9- Asócielo al campo "cantidad".

10- Cree un valor predeterminado con la cadena "Desconocido" llamado "VP_desconocido".

11- Asócielo al campo "autor".

12- Asócielo al campo "editorial".

13- Vea las reglas y valores predeterminados con "sp_help":
 exec sp_help;

14- Vea las reglas y valores predeterminados asociados a "libros".
Aparecen 6 filas, 2 corresponden a la regla "RG_positivo" asociadas a los campos "precio" y 
"cantidad"; 2 al valor predeterminado "VP_cero" asociados a los campos "precio" y "cantidad" y 2 al 
valor predeterminado "VP_desconocido" asociados a los campos "editorial" y "autor".

15- Ingrese un registro con valores por defecto para todos los campos, excepto "titulo" y vea qué se 
almacenó.

15- Quite la asociación del valor predeterminado "VP_cero" al campo "precio".

16- Ingrese otro registro con valor predeterminado para el campo "precio" y vea cómo se almacenó.

17- Vea las reglas y valores predeterminados asociados a "libros".
5 filas; el valor predeterminado "VP_cero" ya no está asociado al campo "precio".

18- Verifique que el valor predeterminado "VP_cero" existe aún en la base de datos.

19- Intente eliminar el valor predeterminado "VP_cero".
No se puede porque está asociado al campo "cantidad".

20- Quite la asociación del valor predeterminado "VP_cero" al campo "cantidad".

21- Verifique que ya no existe asociación de este valor predeterminado con la tabla "libros".
4 filas.

22- Verifique que el valor predeterminado "VP_cero" aun existe en la base de datos.

23- Elimine el valor predeterminado "VP_cero".

24- Verifique que ya no existe en la base de datos.
Ver solución

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

 if object_id ('VP_cero') is not null
   drop default VP_cero;
 if object_id ('VP_desconocido') is not null
   drop default VP_desconocido;
 if object_id ('RG_positivo') is not null
   drop rule RG_positivo;

 create table libros(
  codigo int identity,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(20),
  precio decimal(5,2),
  cantidad smallint
 );

 create rule RG_positivo
 as @valor >=0;

 exec sp_bindrule RG_positivo,'libros.precio';

 exec sp_bindrule RG_positivo,'libros.cantidad';

 create default VP_cero
  as 0;

 exec sp_bindefault VP_cero,'libros.precio';

 exec sp_bindefault VP_cero,'libros.cantidad';

 create default VP_desconocido
  as 'Desconocido';

 exec sp_bindefault VP_desconocido,'libros.autor';

 exec sp_bindefault VP_desconocido,'libros.editorial';

 exec sp_help;

 exec sp_helpconstraint libros;

 insert into libros (titulo) values('Aprenda PHP');
 select * from libros;

 exec sp_unbindefault 'libros.precio';

 insert into libros (titulo) values('Matematica estas ahi');
 select * from libros;

 exec sp_helpconstraint libros;

 exec sp_help VP_cero;

 drop default VP_cero;

 exec sp_unbindefault 'libros.cantidad';

 exec sp_helpconstraint libros;

 exec sp_help VP_cero;

 drop default VP_cero;

 exec sp_help VP_cero;



 

Retornar