Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/02/2008, 16:43
santino
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Duda con Delete

Hola
He intentado como tú dices Andres95 pero no me funciono (no me elimina de ninguna tabla). Pero he probado así:
Código:
CREATE      PROCEDURE EliminarClientes 	@Ci   int AS
BEGIN 
	DECLARE @Error int
	if (NOT EXISTS (SELECT ci FROM clientes WHERE ci=@ci))
	BEGIN
		RETURN 0;
	END	
	ELSE
	BEGIN
		BEGIN TRAN
		
		DELETE cuentas 
		WHERE cuenta = (SELECT cuenta FROM titular WHERE ci = @ci)
		SET @Error=@@ERROR;

		delete titular 
		where ci=@ci;
		set @Error=@@ERROR+@error;

	        delete clientes
		where ci=@ci;
		SET @Error=@@ERROR+@error;

		delete Personas
		WHERE ci =  @ci;
		SET @Error=@@ERROR+@error;

		IF(@Error=0)
		BEGIN
			COMMIT TRAN;
			RETURN 1;
		END
		ELSE
		BEGIN
			ROLLBACK TRAN;
			RETURN 0;
		END	
	END
END
go
y.. si me ha funcionado , me elimina de todas las tablas !!
Que les parece el codigo? podría optimizarlo?
El gran problema (creo yo) es que tenía la tabla titular de la siguiente manera:

create table Titular (
ci int not null primary key ,
cuenta int not null identity (1000,1),
foreign key (ci) references Personas (ci),
foreign key (cuenta) references Cuentas (cuenta)

al borrar la última linea me funciono!!
Bueno Muchas gracias a los dos por ayudarme , siempre es bueno contar con gente como ustedes !!!
Saludos