Listado completo de tutoriales

56 - Información de reglas (sp_help - sp_helpconstraint)


Ver video

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

Servidor de SQL Server instalado en forma local.

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%';

Retornar