Trigger 'before delete' para borrado en cascada

17/07/2003 - 11:10 por José Manuel Blanes Pacheco | Informe spam
Hola grupo:

Necesito implementar un trigger del tipo 'before delete' para que en una
tabla A (parte uno), al borrar una de sus filas, se borren las filas de la
tabla B (parte muchos). Existe una integridad referencial en la tabla B
referente a la clave primaria de la tabla A. Pero veo que el trigger 'on
delete' se ejecuta cuando ya se ha hecho el borrado en la tabla A y se está
a la espera del commit o del rollback y por tanto se activa la restricción
de integridad referencial y no me permite realizar el borrado en cascada. He
pensado en eliminar la integridad referencial y usar triggers para
implementarla, pero me parece un retroceso.

La versión del SQL Server es la 7 con el Service Pack 4.

De antemano, muchas gracias a todo aquel que responda.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
17/07/2003 - 11:46 | Informe spam
Las restricciones salta antes de los trigger, o sea que si tienes la
versión 7 (en la versión 2000 ya existen los borrados y actualizaciones en
cascada) y necesitas implementar un borrado en cascada, tendrás que eliminar
las relaciones (y asegurar la integridad por medio de triggers)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro

(Guía de netiquette del foro)
http://www.helpdna.net/bosqlfaq00.htm
http://perso.wanadoo.es/rubenvigon/foro

(FAQ's de SQL Server)
http://support.microsoft.com/defaul.../70faq.asp
http://www.helpdna.net/bosqlfaq.htm

"José Manuel Blanes Pacheco" escribió en el mensaje
news:xKtRa.27780$
Hola grupo:

Necesito implementar un trigger del tipo 'before delete' para que en


una
tabla A (parte uno), al borrar una de sus filas, se borren las filas de la
tabla B (parte muchos). Existe una integridad referencial en la tabla B
referente a la clave primaria de la tabla A. Pero veo que el trigger 'on
delete' se ejecuta cuando ya se ha hecho el borrado en la tabla A y se


está
a la espera del commit o del rollback y por tanto se activa la restricción
de integridad referencial y no me permite realizar el borrado en cascada.


He
pensado en eliminar la integridad referencial y usar triggers para
implementarla, pero me parece un retroceso.

La versión del SQL Server es la 7 con el Service Pack 4.

De antemano, muchas gracias a todo aquel que responda.


Respuesta Responder a este mensaje
#2 Miguel Egea
18/07/2003 - 08:51 | Informe spam
y además los instead of triggers que aunque son 'en lugar de' y no before,
podrían considerarse parecidos.

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Salvador Ramos" escribió en el mensaje
news:
Efectivamente, como te indica Carlos, no es compatible la utilización de
triggers para borrados en cascada con la utilización de integridad
referencial declarativa. Esto es debido a que en SQL Server 7 sólo existen
triggers de tipo AFTER, y no esos supuestos "before" que andas buscando.

Esto está solucionado en SQL Server 2000, que si permite ya el borrado en
cascada al definir la integridad referencial declarativa (IRD)

Un saludo
Salvador Ramos
Murcia - España

No puedes conseguir software rápidamente disminuyendo su calidad.
En cambio, si que lo consigues aumentando la calidad.

www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)


Microsoft MVP SQL Server
MCP SQL Server
PASS Spanish Group (www.sqlpass.org)


"Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
news:
>
> Las restricciones salta antes de los trigger, o sea que si tienes la
> versión 7 (en la versión 2000 ya existen los borrados y actualizaciones


en
> cascada) y necesitas implementar un borrado en cascada, tendrás que
eliminar
> las relaciones (y asegurar la integridad por medio de triggers)
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
>
> (Guía de netiquette del foro)
> http://www.helpdna.net/bosqlfaq00.htm
> http://perso.wanadoo.es/rubenvigon/foro
>
> (FAQ's de SQL Server)
> http://support.microsoft.com/defaul.../70faq.asp
> http://www.helpdna.net/bosqlfaq.htm
>
> "José Manuel Blanes Pacheco" escribió en el mensaje
> news:xKtRa.27780$
> > Hola grupo:
> >
> > Necesito implementar un trigger del tipo 'before delete' para que


en
> una
> > tabla A (parte uno), al borrar una de sus filas, se borren las filas


de
la
> > tabla B (parte muchos). Existe una integridad referencial en la tabla


B
> > referente a la clave primaria de la tabla A. Pero veo que el trigger


'on
> > delete' se ejecuta cuando ya se ha hecho el borrado en la tabla A y se
> está
> > a la espera del commit o del rollback y por tanto se activa la
restricción
> > de integridad referencial y no me permite realizar el borrado en
cascada.
> He
> > pensado en eliminar la integridad referencial y usar triggers para
> > implementarla, pero me parece un retroceso.
> >
> > La versión del SQL Server es la 7 con el Service Pack 4.
> >
> > De antemano, muchas gracias a todo aquel que responda.
> >
> >
>
>


Respuesta Responder a este mensaje
#3 José Manuel Blanes Pacheco
20/07/2003 - 11:18 | Informe spam
Muchas gracias. He utilizado triggers para mantener la integridad
referencial y he implementado los borrados en cascada en éllos. Gracias a
todos.


"Miguel Egea" escribió en el mensaje
news:
y además los instead of triggers que aunque son 'en lugar de' y no before,
podrían considerarse parecidos.

Espero que te sirva.

Saludos
Miguel Egea
http://www.portalsql.com
Sql-Server MVP
"Salvador Ramos" escribió en el mensaje
news:
> Efectivamente, como te indica Carlos, no es compatible la utilización de
> triggers para borrados en cascada con la utilización de integridad
> referencial declarativa. Esto es debido a que en SQL Server 7 sólo


existen
> triggers de tipo AFTER, y no esos supuestos "before" que andas buscando.
>
> Esto está solucionado en SQL Server 2000, que si permite ya el borrado


en
> cascada al definir la integridad referencial declarativa (IRD)
>
> Un saludo
> Salvador Ramos
> Murcia - España
>
> No puedes conseguir software rápidamente disminuyendo su calidad.
> En cambio, si que lo consigues aumentando la calidad.
>
> www.helpdna.net (información sobre Windows DNA, SQL Server, .NET, ...)
>
>
> Microsoft MVP SQL Server
> MCP SQL Server
> PASS Spanish Group (www.sqlpass.org)
>
>
> "Carlos Sacristan" <csacristanARROBAocasoPUNTOes> escribió en el mensaje
> news:
> >
> > Las restricciones salta antes de los trigger, o sea que si tienes


la
> > versión 7 (en la versión 2000 ya existen los borrados y


actualizaciones
en
> > cascada) y necesitas implementar un borrado en cascada, tendrás que
> eliminar
> > las relaciones (y asegurar la integridad por medio de triggers)
> >
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> >
> > (Guía de netiquette del foro)
> > http://www.helpdna.net/bosqlfaq00.htm
> > http://perso.wanadoo.es/rubenvigon/foro
> >
> > (FAQ's de SQL Server)
> > http://support.microsoft.com/defaul.../70faq.asp
> > http://www.helpdna.net/bosqlfaq.htm
> >
> > "José Manuel Blanes Pacheco" escribió en el


mensaje
> > news:xKtRa.27780$
> > > Hola grupo:
> > >
> > > Necesito implementar un trigger del tipo 'before delete' para


que
en
> > una
> > > tabla A (parte uno), al borrar una de sus filas, se borren las filas
de
> la
> > > tabla B (parte muchos). Existe una integridad referencial en la


tabla
B
> > > referente a la clave primaria de la tabla A. Pero veo que el trigger
'on
> > > delete' se ejecuta cuando ya se ha hecho el borrado en la tabla A y


se
> > está
> > > a la espera del commit o del rollback y por tanto se activa la
> restricción
> > > de integridad referencial y no me permite realizar el borrado en
> cascada.
> > He
> > > pensado en eliminar la integridad referencial y usar triggers para
> > > implementarla, pero me parece un retroceso.
> > >
> > > La versión del SQL Server es la 7 con el Service Pack 4.
> > >
> > > De antemano, muchas gracias a todo aquel que responda.
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida