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