Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   procedimiento de eliminacion (https://www.clubdelphi.com/foros/showthread.php?t=29694)

kejos 30-01-2006 16:12:00

procedimiento de eliminacion
 
Hola a todos!!!!!
yo tengo el siguiente procedimiento:

Código SQL [-]
CREATE procedure spEliminarDatos (@docidentidad varchar(30),@idtipodoc int,
  @nombrescompletos nvarchar(50), @primerapellido nvarchar(50),
  @segundoapellido nvarchar(50), @direccion nvarchar(50), @telefono nvarchar(50),
  @mail nvarchar(50), @fechanac datetime, @idciudadnac int,
  @estadocivil nvarchar(50),  @sexo nvarchar(50), @idpaisnac int,
  @barrio nvarchar(50),  @idciudadres int, @idpaisres int, @fax nvarchar(50),
  @celular nvarchar(50),@UltActualizacion datetime) AS if exists (select [docidentidad],
  [nombrescompletos], [primerapellido], [segundoapellido] from InfPersonal where
  [docidentidad]=@docidentidad and [nombrescompletos]=@nombrescompletos and
  [primerapellido]=@primerapellido and [segundoapellido]=@segundoapellido) delete from
  [InfPersonal] where [docidentidad]=@docidentidad else raiserror
  ('Los Datos Ingresados No Existen',16,1)
return GO

y lo estoy llamando desde una aplicacionde asp pero tengo un pequeño problema cómo estos son datos personales hay tablas que estan relacionadas con es tos datos por lo cuál no se me eliminan los datos por las relaciones lo que yo quiero es poder hacer la eliminacion en el procedimiento en cascada, es decir; que primero borre los datos de las tablas que esten relacionadas con ese registro y luego si me haga la eliminación de los datos personales
cómo puedo hacerlo???
a quien me pueda ayudar se lo agradezco es cómo urgente espero sus respuestas

Neftali [Germán.Estévez] 30-01-2006 16:21:12

Puedes utilizar restricciones de integridad referencial en cascada.
Busca ayuda en SQL Server para más datos, pero básicamente, defines las relaciones entre tablas utilizando ON DELETE CASCADE (para tu caso), de forma que cuando borres los datos, borrará los registros relacionados en el resto de tablas (que creo que es lo que quieres).

Lepe 30-01-2006 16:28:15

Tendrás que estudiar como estan diseñadas las relaciones y borrar en la tabla que tiene un autoincremento (suele ser la tabla maestra), si todas las tablas que tienen clave ajena (foreign key) tienen on delete cascade, el SGBD se encargará de borrarlas.

Como ves funciona justo al revés de como has supuesto. Debes borrar la maestra, y el sistema borrará lo demás.

saludos

kejos 30-01-2006 16:46:02

gracias
 
Hola!!!!
muchas gracias por sus respuestas me han sido de muchisima ayuda


La franja horaria es GMT +2. Ahora son las 01:12:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi