Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/11/2006, 08:18
bananas
 
Fecha de Ingreso: junio-2004
Ubicación: ORENSE
Mensajes: 258
Antigüedad: 19 años, 10 meses
Puntos: 0
Exclamación problema con trigger

Hola a todos,les explico:
Tengo el siguiente procedimiento almacenado para insertar un cliente

Código:
ALTER PROCEDURE dbo.AltaCliente
@Dni_Insertado char(9) OUT,
@Dni char(9),
@Nombre varchar(20),
@Apellido1 varchar(50),
@Apellido2 varchar(50),
@Direccion varchar(50),
@Telefono char(9),
@Movil char(9)
AS
INSERT INTO dbo.Cliente (Dni,Nombre,Apellido1,Apellido2,Direccion,Telefono,Movil) 
VALUES (@Dni,@Nombre,@Apellido1,@Apellido2,@Direccion,@Telefono,@Movil);

SELECT @Dni_Insertado=dni FROM dbo.Cliente WHERE dni=@Dni;
Y por otro lado este trigger que me comprueba que el dni del cliente que voy insertar no estea ya en la bbdd

Código:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER TRIGGER [trigger_AltaCliente] 
   ON  [dbo].[Cliente]
   FOR INSERT
AS 
Declare @num int

SELECT @num=COUNT(i.dni) FROM inserted i INNER JOIN dbo.Cliente c
ON c.dni = i.dni

if(@num = 1)
	begin
		ROLLBACK TRANSACTION
	end
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
    -- Insert statements for trigger here

END
Al llamar al procedimiento almacenado desde codigo C# se dispara el trigger y si no existe un dni igual en la bbdd inserta el cliente correctamente.El problema me viene cuando existe un dni igual en la bbdd entonces el trigger tendria que deshacer la accion con rollback,pero esto me da un error.Por que??
__________________
Inmuebles de Galicia:www.inmueblevirtual.net
Compartir piso en Galicia:www.inmueblevirtual.net/foro