domingo, 23 de febrero de 2014

Valores predeterminados y las reglas como objetos independientes



Tener en cuenta:

- Se definen una vez 
- Pueden vincularse a una o mas columnas o a tipos de datos definidos por el usuario 
- Toda regla asociada a la columna y a los tipos de datos valida el valor de un valor predeterminado 
- Cualquier restricción CHECK sobre la columna debe validar el valor de un valor predeterminado 
- No se puede crear una restricción DEFAULT en una columna que este definida con un tipo de datos definido por el usuario si dicha columna o tipo tuvieran un valor predeterminado

  • DEFAULT

Sintaxis

CREATE DEFAULT Nombre AS Expresión

Procedimientos de sistema para valores predeterminados 

  • sp_helpconstraint: muestra todas las restricciones que tiene una tabla 
  • sp_bindefault: con este procedimiento lo que hago es vincular el valor por defecto a la tabla. 
  • sp_unbindefault: Con este otro lo que hago es desvincular el valor por defecto de la tabla


use northwind 
GO 
CREATE DEFAULT Telefono_default AS '(00)000-0000' 
GO 
EXEC sp_bindefault Telefono_default,'Customers.Phone' 


Al desvincularlo de la tabla se invierten los valores 

EXEC sp_unbindefault 'Customers.Phone', Telefono_default 

use northwind 
EXEC sp_helpconstraint products 


Para eliminar varios objetos de la base de datos con una sola sentencia 

DROP DEFAULT Nombre


  • REGLAS 

- Puede contener cualquier expresión valida para una clausula WHERE 
- Una columna o tipo de dato definido por el usuario solo puede tener asociado una regla 

Sintaxis 

CREATE RULE NombreRegla AS Condición 

Procedimientos almacenados de sistema para las reglas: 
  • sp_bindrule: vincula una regla a la tabla 
  • sp_unbindrule: desvincula una regla de la tabla 


use Hospital 
create rule Funcion_Rule 
as  
@Funcion in('INTERINO','ENFERMERO','ENFERMERA') 
GO 
EXEC sp_bindrule Funcion_rule,'Plantilla.Funcion' 


Para desvincular la regla de la tabla se invierten los valores 

EXEC sp_unbindrule 'Plantilla.Funcion', Funcion_rule 


Si fuese un intervalo de valores se podría hacer asi 

use northwind
GO 
CREATE RULE regioncode_rule  
AS @regioncode >=1000 and @regioncode <=100 
GO
EXEC sp_bindrule regioncode_rule,'Customers.Region' 


O también 

use northwind 
GO
CREATE RULE regioncode_rule  AS @regioncode like '[0-9][0-9 ][ 0-9]'

GO 
EXEC sp_bindrule regioncode_rule,'Customers.Region' 


Para borrar la regla se pone  

DROP RULE NombreRegla 



A continuación, el primero de los procedimientos muestra el texto que se ha utilizado para crear la regla, el segundo procedimiento renombra el objeto, se puede utilizar con cualquier tipo de objeto de la base de datos.  

Exec sp_helptext Funcion_Rule



Exec sp_rename Oficio_rule, Funcion_Regla  


Advertencia: al cambiar cualquier parte del nombre de un objeto pueden dejar de ser válidas secuencias de comandos y procedimientos almacenados. El object ha cambiado su nombre por 'Funcion_Regla'.  

Tabla para evaluar la integridad de los datos


Espero haber ayudado en algo. Hasta la próxima oportunidad! 



No hay comentarios:

Publicar un comentario en la entrada