VALIDAR DNI

18/03/2005 - 21:21 por CCALLOQUISPE PALOMINO | Informe spam
HOLA:
he escrito el siguiente trigger:
IF EXISTS (SELECT name FROM sysobjects WHERE name =
'TR_BS_I_ValidarDni_empleado' AND
type = 'TR')
DROP TRIGGER TR_BS_I_ValidarDni_empleado

go

CREATE TRIGGER TR_BS_I_ValidarDni_empleado

on Tsl_Empleado

AFTER INSERT,UPDATE

/*

AUTOR: CCALLOQUISPE PALOMINO RONALD VALENTIN
FECHA CREACION: 13/02/2005
FECHA ACTUALIZACION: NO DISPONIBLE
TEMA: ESTE TRIGGER TIENE COMO OBJETIVO QUE AL ACTUALIZAR EL DNI DEL EMPLEADO
NO SE REPITA CON EL DNI DE OTRO EMPLEADO.

*/

AS

/*

VARIABLES INTERNAS DEL TRIGGER

*/

declare @v_cantidad int
declare @v_dni varchar(10)
select
top 1
@v_dni=inserted.T_Empleado_dni
from inserted

select @v_cantidad=count(*)
from tsl_empleado
where T_empleado_dni=@v_dni

IF @v_cantidad>1

BEGIN


raiserror('EL Nº DNI YA ESTA ASIGNADO A OTRA PERSONA',16,1)
rollback transaction

END

/*
DECLARE @v_cantidad int

select @v_cantidad=count(*)
from tsl_empleado a,inserted b
where

a.T_Empleado_Dni=b.T_Empleado_Dni
and a.T_Empleado_Dni <> ''

IF @v_cantidad>=2

BEGIN


raiserror('EL Nº DNI YA ESTA ASIGNADO A OTRA PERSONA',16,1)
rollback transaction

END
*/

el problema con este trigger es que cuando en un formulario windows ingreso
el numero de dni repetido d eun empleado la validacion se demora mucho tiempo
dando una impresion de que se ha quedado colgado si fueran tan amable de como
puedo modificar este trigger para que sea mas rapido.

chau y muchas gracias por anticipado
CCALLOQUISPE
 

Leer las respuestas

#1 Maxi
18/03/2005 - 21:32 | Informe spam
Hola, porque no usar indices unicos para resolver este problema?


Salu2
Maxi


"CCALLOQUISPE PALOMINO" escribió en el mensaje
news:
HOLA:
he escrito el siguiente trigger:
IF EXISTS (SELECT name FROM sysobjects WHERE name > 'TR_BS_I_ValidarDni_empleado' AND
type = 'TR')
DROP TRIGGER TR_BS_I_ValidarDni_empleado

go

CREATE TRIGGER TR_BS_I_ValidarDni_empleado

on Tsl_Empleado

AFTER INSERT,UPDATE

/*

AUTOR: CCALLOQUISPE PALOMINO RONALD VALENTIN
FECHA CREACION: 13/02/2005
FECHA ACTUALIZACION: NO DISPONIBLE
TEMA: ESTE TRIGGER TIENE COMO OBJETIVO QUE AL ACTUALIZAR EL DNI DEL
EMPLEADO
NO SE REPITA CON EL DNI DE OTRO EMPLEADO.

*/

AS

/*

VARIABLES INTERNAS DEL TRIGGER

*/

declare @v_cantidad int
declare @v_dni varchar(10)
select
top 1
@v_dni=inserted.T_Empleado_dni
from inserted

select @v_cantidad=count(*)
from tsl_empleado
where T_empleado_dni=@v_dni

IF @v_cantidad>1

BEGIN


raiserror('EL Nº DNI YA ESTA ASIGNADO A OTRA PERSONA',16,1)
rollback transaction

END

/*
DECLARE @v_cantidad int

select @v_cantidad=count(*)
from tsl_empleado a,inserted b
where

a.T_Empleado_Dni=b.T_Empleado_Dni
and a.T_Empleado_Dni <> ''

IF @v_cantidad>=2

BEGIN


raiserror('EL Nº DNI YA ESTA ASIGNADO A OTRA PERSONA',16,1)
rollback transaction

END
*/

el problema con este trigger es que cuando en un formulario windows
ingreso
el numero de dni repetido d eun empleado la validacion se demora mucho
tiempo
dando una impresion de que se ha quedado colgado si fueran tan amable de
como
puedo modificar este trigger para que sea mas rapido.

chau y muchas gracias por anticipado
CCALLOQUISPE

Preguntas similares