Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/02/2008, 13:50
Avatar de krakxp
krakxp
 
Fecha de Ingreso: junio-2006
Ubicación: NA
Mensajes: 105
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Problema de integridad; ke esllave compuesta? 2 o mas llaves primarias en una ta

Cita:
Iniciado por iislas Ver Mensaje
La solucion total esta, en que al momento que hagas un INSERT, UPDATE, manejes transacciones EXPLICITAS, esto es BEGIN TRAN, COMMIT TRAN o ROLLBACK TRAN, con eso, te aseguraras que mas de 1 usuario, no registre lo mismo que otro usuario.

Si estas utilizando IDENTITY, te sugiero que hagas caso omiso de @@IDENTITY y utilices la funcion SCOPE_IDENTITY().

Necesitaria mas datos al respecto, esto es lo que puedo comentar.
Orales pues deja pruebo eso de indentity aunke si me explican mejor como usarlo bien en base a este sp ke es el pricncipal ke hace el registro se los agradecere mucho

porke mi sp lo tengo asi:

Código:
CREATE PROCEDURE [dbo].[spSetStsEntInd]
(@CveEntInd int, @Sts int output)
 AS
DECLARE @TpoFrmInd int
    SET @TpoFrmInd = 0
    SET @Sts = 0
    
    SELECT @TpoFrmInd = @TpoFrmInd  FROM TblEntInd (NOLOCK) WHERE CveEntInd = @CveEntInd
    
     --Indicador-Ente Fiscalizable
    IF NOT EXISTS (SELECT CveEntInd FROM TblIndFis (NOLOCK) WHERE CveEntInd = @CveEntInd)
        BEGIN
            SET @Sts = 2
        END
    
    --Indicador basado en fórmula
    IF @TpoFrmInd = 1
        BEGIN
            IF NOT EXISTS ( SELECT CveEntInd FROM TblEntInd (NOLOCK) WHERE CveEntInd = @CveEntInd)
                SET @Sts = 4
        END
    IF @Sts = 0
        BEGIN
            BEGIN TRAN
                UPDATE TblEntInd SET StsEntInd = 1 WHERE CveEntInd = @CveEntInd
                IF @@ERROR <> 0
                    BEGIN
                        ROLLBACK TRAN
                        SET @Sts = 5
                        RETURN -1
                    END
            COMMIT TRAN
        END
GO