Relaciones, no se como!

17/02/2006 - 15:29 por Victor E. Diaz | Informe spam
Hi List,

Lei un hilo sobre relaciones bastante interesante, siento que las relaciones
para restrinciones de integridad funcionan mejor en VFP que en sql_server,
en fin no es el caso, usaré las cascadas para lo que necesita cascada que
sea importante, y los 'sp' para lo demas, pero no sé como! :-(

Me pueden regalar un ejemplo de 'sp' que impida el borrado de un cliente
dentro de una factura existente, y decirme como lo invoco, o se pone en
CHECKS, que seria mejor, alquien con paciencia me aclara la duda y me ayuda
un poquin.

Gracias mil,
 

Leer las respuestas

#1 Alejandro Mesa
17/02/2006 - 16:03 | Informe spam
Victor,

Primero debes usar una restriccion de clave foranea, aunque no actives las
actualizacines y/o borrado en cascada. Si tratas de borrar un cliente que
tiene facturas, sql server chequeara la restriccion de clave foranea y
devolvera error, por lo que tu sp debe acptar como parametro el [id] del
cliente en cuestion, y dentro de una transaccion eliminar sus facturas y
despues eliminar al cliente. Algo asi como:

create procedure p1
customerid nchar(5)
as
set nocount on

begin transaction

if exists(select * from dbo.[orders] where customerid = @customerid)
begin
delete a from dbo.[order details] as a inner join dbo.[orders] as b
on a.orderid = b.orderid and b.orderid = @customerid

delete dbo.[orders] where customerid = @customerid
end

delete dbo.customers where customerid = @customerid

commit transaction
go

No incluyo manejo de errores para hacer el codigo mas sencillo, pero
recomiendo fuertemente que se incluya en codigo en produccion.


AMB

"Victor E. Diaz" wrote:

Hi List,

Lei un hilo sobre relaciones bastante interesante, siento que las relaciones
para restrinciones de integridad funcionan mejor en VFP que en sql_server,
en fin no es el caso, usaré las cascadas para lo que necesita cascada que
sea importante, y los 'sp' para lo demas, pero no sé como! :-(

Me pueden regalar un ejemplo de 'sp' que impida el borrado de un cliente
dentro de una factura existente, y decirme como lo invoco, o se pone en
CHECKS, que seria mejor, alquien con paciencia me aclara la duda y me ayuda
un poquin.

Gracias mil,




Preguntas similares