Listado completo de tutoriales
56 - Información de reglas (sp_help - sp_helpconstraint) |
Podemos utilizar el procedimiento almacenado "sp_help" con el nombre del objeto del cual queremos información, en este caso el nombre de una regla:
exec sp_help NOMBREREGLA;
muestra nombre, propietario, tipo y fecha de creación.
Con "sp_help", no sabemos si las reglas existentes están o no asociadas a algún campo.
"sp_helpconstraint" retorna una lista de todas las restricciones que tiene una tabla. Podemos ver las reglas asociadas a una tabla con este procedimiento almacenado:
exec sp_helpconstraint NOMBRETABLA;
muestra la siguiente información:
- constraint_type: indica que es una regla con "RULE", nombrando el campo al que está asociada.
- constraint_name: nombre de la regla.
- constraint_keys: muestra el texto de la regla.
Para ver el texto de una regla empleamos el procedimiento almacenado "sp_helptext" seguido del nombre de la regla:
exec sp_helptext NOMBREREGLA;
También se puede consultar la tabla del sistema "sysobjects", que nos muestra el nombre y varios datos de todos los objetos de la base de datos actual. La columna "xtype" indica el tipo de objeto, en caso de ser una regla aparece el valor "R":
select * from sysobjects;
Si queremos ver todas las reglas creadas por nosotros, podemos tipear:
select * from sysobjects where xtype='R' and-- tipo regla name like 'RG%';--búsqueda con comodín
Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:
if object_id ('empleados') is not null
drop table empleados;
if object_id ('RG_sueldo') is not null
drop rule RG_sueldo;
if object_id ('RG_seccion_lista') is not null
drop rule RG_seccion_lista;
create table empleados(
documento char(8) not null,
nombre varchar(30) not null,
seccion varchar(20),
sueldo decimal(6,2),
primary key(documento)
);
go
-- Creamos una regla para el campo "sueldo":
create rule RG_sueldo
as @sueldo between 100 and 1000;
go
-- Asociamos la regla creada anteriormente al campo "sueldo":
exec sp_bindrule RG_sueldo, 'empleados.sueldo';
go
-- Creamos una regla con una lista de valores para "seccion":
create rule RG_seccion_lista
as @seccion in ('Sistemas','Secretaria','Contaduria');
go
exec sp_help RG_sueldo;
exec sp_helpconstraint empleados;
exec sp_bindrule RG_seccion_lista, 'empleados.seccion';
exec sp_helpconstraint empleados;
exec sp_helptext "RG_seccion_lista";
-- Deshacemos la asociación de la regla "RG_sueldo" y la eliminamos:
exec sp_unbindrule 'empleados.sueldo';
drop rule RG_sueldo;
exec sp_help RG_sueldo;
select * from sysobjects
where xtype='R' and
name like '%seccion%';