57 - Valores predeterminados (create default) |
Una empresa registra los datos de sus clientes en una tabla llamada "clientes". 1- Elimine la tabla si existe: if object_id ('clientes') is not null drop table clientes; 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_legajo_patron') is not null drop default VP_legajo_patron; if object_id ('RG_legajo_patron') is not null drop rule RG_legajo_patron; if object_id ('RG_legajo') is not null drop rule RG_legajo; if object_id ('VP_datodesconocido') is not null drop default VP_datodesconocido; if object_id ('VP_fechaactual') is not null drop default VP_fechaactual; 3- Cree la tabla: create table clientes( legajo char(4), nombre varchar(30), domicilio varchar(30), ciudad varchar(15), provincia varchar(20) default 'Cordoba', fechaingreso datetime ); 4- Cree una regla para establecer un patrón para los valores que se ingresen en el campo "legajo" (2 letras seguido de 2 cifras) llamada "RG_legajo_patron": 5- Asocie la regla al campo "legajo". 6- Cree un valor predeterminado para el campo "legajo" ('AA00') llamado "VP_legajo_patron". 7- Asócielo al campo "legajo". Recuerde que un campo puede tener un valor predeterminado y reglas asociados. 8- Cree un valor predeterminado con la cadena "??" llamado "VP_datodesconocido". 9- Asócielo al campo "domicilio". 10- Asócielo al campo "ciudad". Recuerde que un valor predeterminado puede asociarse a varios campos. 11- Ingrese un registro con valores por defecto para los campos "domicilio" y "ciudad" y vea qué almacenaron. 12- Intente asociar el valor predeterminado "VP_datodesconocido" al campo "provincia". No se puede porque dicho campo tiene una restricción "default". 13- Cree un valor predeterminado con la fecha actual llamado "VP_fechaactual". 14- Asócielo al campo "fechaingreso". 15- Ingrese algunos registros para ver cómo se almacenan los valores para los cuales no se insertan datos. 16- Asocie el valor predeterminado "VP_datodesconocido" al campo "fechaingreso". Note que se asoció un valor predeterminado de tipo caracter a un campo de tipo "datetime"; SQL Server lo permite, pero al intentar ingresar el valor aparece un mensaje de error. 17- Ingrese un registro con valores por defecto. No lo permite porque son de distintos tipos. 18- Cree una regla que entre en conflicto con el valor predeterminado "VP_legajo_patron". 19- Asocie la regla al campo "legajo". Note que la regla especifica que el campo "legajo" debe comenzar con la letra "B", pero el valor predeterminado tiene el valor "AA00"; SQL Server realiza la asociación, pero al intentar ingresar el valor predeterminado, no puede hacerlo y muestra un mensaje de error. 20- Intente ingresar un registro con el valor "default" para el campo "legajo". No lo permite porque al intentar ingresar el valor por defecto establecido con el valor predeterminado entra en conflicto con la regla "RG_legajo".Ver solución
if object_id ('clientes') is not null drop table clientes; if object_id ('VP_legajo_patron') is not null drop default VP_legajo_patron; if object_id ('RG_legajo_patron') is not null drop rule RG_legajo_patron; if object_id ('RG_legajo') is not null drop rule RG_legajo; if object_id ('VP_datodesconocido') is not null drop default VP_datodesconocido; if object_id ('VP_fechaactual') is not null drop default VP_fechaactual; create table clientes( legajo char(4), nombre varchar(30), domicilio varchar(30), ciudad varchar(15), provincia varchar(20) default 'Cordoba', fechaingreso datetime ); create rule RG_legajo_patron as @valor like '[A-Z][A-Z][0-9][0-9]'; exec sp_bindrule RG_legajo_patron,'clientes.legajo'; create default VP_legajo_patron as 'AA00'; exec sp_bindefault VP_legajo_patron,'clientes.legajo'; create default VP_datodesconocido as '??'; exec sp_bindefault VP_datodesconocido,'clientes.domicilio'; exec sp_bindefault VP_datodesconocido,'clientes.ciudad'; insert into clientes values('GF12','Ana Perez',default,default,'Cordoba','2001-10-10'); select *from clientes; exec sp_bindefault VP_datodesconocido,'clientes.provincia'; create default VP_fechaactual as getdate(); exec sp_bindefault VP_fechaactual,'clientes.fechaingreso'; insert into clientes default values; select *from clientes; exec sp_bindefault VP_datodesconocido,'clientes.fechaingreso'; insert into clientes default values; create rule RG_legajo as @valor like 'B%'; exec sp_bindrule RG_legajo,'clientes.legajo'; insert into clientes values (default,'Luis Garcia','Colon 876','Cordoba','Cordoba','2001-10-10');