Trigger Delete SQL 7.0 ?

26/05/2004 - 22:43 por Manuel Vera | Informe spam
Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger. Aqui
el trigger de ejemplo que no me funciona:

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS
print 'trigger delete'
DELETE FROM Detalle
FROM deleted
WHERE Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats
GO

Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
Pero ni siquiera se ejecuta el -print 'trigger delete'-

Los tres campos en el WHERE son la PK de Maestro.

¿Alguien puede decirme que esta mal?
El trigger no se ejecuta y me da error en el delete del registro en Maestro.

Gracias
MV

Preguntas similare

Leer las respuestas

#1 Maxi
26/05/2004 - 22:58 | Informe spam
Hola, a ver si esto te funciona? (sin probar)

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS

DELETE Detalle
FROM deleted inner join detalle on
Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats


Suerte



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Manuel Vera" escribió en el mensaje
news:
Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger. Aqui
el trigger de ejemplo que no me funciona:

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS
print 'trigger delete'
DELETE FROM Detalle
FROM deleted
WHERE Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats
GO

Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
Pero ni siquiera se ejecuta el -print 'trigger delete'-

Los tres campos en el WHERE son la PK de Maestro.

¿Alguien puede decirme que esta mal?
El trigger no se ejecuta y me da error en el delete del registro en


Maestro.

Gracias
MV







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP SQL]
26/05/2004 - 22:59 | Informe spam
No tienes un error de sintaxis?

DELETE FROM Detalle
FROM deleted
WHERE ...


Gustavo Larriera, MVP-SQL, MCSE
Uruguay LatAm
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Manuel Vera" wrote in message
news:
Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger. Aqui
el trigger de ejemplo que no me funciona:

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS
print 'trigger delete'
DELETE FROM Detalle
FROM deleted
WHERE Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats
GO

Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
Pero ni siquiera se ejecuta el -print 'trigger delete'-

Los tres campos en el WHERE son la PK de Maestro.

¿Alguien puede decirme que esta mal?
El trigger no se ejecuta y me da error en el delete del registro en


Maestro.

Gracias
MV


Respuesta Responder a este mensaje
#3 Manuel Vera
26/05/2004 - 23:42 | Informe spam
Hola

Voy a probar el cambio que me diste...
Sin embargo, ¿¿¿ porque no se ejecuta el
> print 'trigger delete' ????



MV

"Maxi" wrote in message
news:
Hola, a ver si esto te funciona? (sin probar)

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS

DELETE Detalle
FROM deleted inner join detalle on
Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats

>
Suerte



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Manuel Vera" escribió en el mensaje
news:
> Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger.


Aqui
> el trigger de ejemplo que no me funciona:
>
> CREATE TRIGGER tgMaestroDel ON Maestro
> FOR DELETE
> AS
> print 'trigger delete'
> DELETE FROM Detalle
> FROM deleted
> WHERE Detalle.CarritID = deleted.CarritID
> AND Detalle.CodProduct = deleted.CodProduct
> AND Detalle.Estats = deleted.Estats
> GO
>
> Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
> Pero ni siquiera se ejecuta el -print 'trigger delete'-
>
> Los tres campos en el WHERE son la PK de Maestro.
>
> ¿Alguien puede decirme que esta mal?
> El trigger no se ejecuta y me da error en el delete del registro en
Maestro.
>
> Gracias
> MV
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004


Respuesta Responder a este mensaje
#4 Manuel Vera
27/05/2004 - 15:55 | Informe spam
Hola

Hice el cambio en el JOIN de las tablas y sigue sin funcionar.
¿Que otra cosa podria ser?

MV

"Maxi" wrote in message
news:
Hola, a ver si esto te funciona? (sin probar)

CREATE TRIGGER tgMaestroDel ON Maestro
FOR DELETE
AS

DELETE Detalle
FROM deleted inner join detalle on
Detalle.CarritID = deleted.CarritID
AND Detalle.CodProduct = deleted.CodProduct
AND Detalle.Estats = deleted.Estats

>
Suerte



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Manuel Vera" escribió en el mensaje
news:
> Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger.


Aqui
> el trigger de ejemplo que no me funciona:
>
> CREATE TRIGGER tgMaestroDel ON Maestro
> FOR DELETE
> AS
> print 'trigger delete'
> DELETE FROM Detalle
> FROM deleted
> WHERE Detalle.CarritID = deleted.CarritID
> AND Detalle.CodProduct = deleted.CodProduct
> AND Detalle.Estats = deleted.Estats
> GO
>
> Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
> Pero ni siquiera se ejecuta el -print 'trigger delete'-
>
> Los tres campos en el WHERE son la PK de Maestro.
>
> ¿Alguien puede decirme que esta mal?
> El trigger no se ejecuta y me da error en el delete del registro en
Maestro.
>
> Gracias
> MV
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004


Respuesta Responder a este mensaje
#5 Carlos Sacristan
27/05/2004 - 16:05 | Informe spam
Con tu permiso, Maxi...

Manuel, no te va a funcionar ese trigger porque en realidad nunca se
dispara si existe integridad referencial entre la tabla maestro y la
detalle: los trigger saltan después de ejecutada la acción que los lanza, no
antes. De ahí que te salte el error y se cancele el proceso (no sale el
texto de la instrucción PRINT).

Para que te funcione debes eliminar la restricción primeramente, o bien
hacerlo a través de un procedimiento almacenado.



Un saludo

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

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Manuel Vera" escribió en el mensaje
news:#wFeUJ$
Hola

Hice el cambio en el JOIN de las tablas y sigue sin funcionar.
¿Que otra cosa podria ser?

MV

"Maxi" wrote in message
news:
> Hola, a ver si esto te funciona? (sin probar)
>
> CREATE TRIGGER tgMaestroDel ON Maestro
> FOR DELETE
> AS
>
> DELETE Detalle
> FROM deleted inner join detalle on
> Detalle.CarritID = deleted.CarritID
> AND Detalle.CodProduct = deleted.CodProduct
> AND Detalle.Estats = deleted.Estats
>
> > >
> Suerte
>
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Manuel Vera" escribió en el mensaje
> news:
> > Quiero hacer un "delete cascade" usando SQL 7 a traves de un trigger.
Aqui
> > el trigger de ejemplo que no me funciona:
> >
> > CREATE TRIGGER tgMaestroDel ON Maestro
> > FOR DELETE
> > AS
> > print 'trigger delete'
> > DELETE FROM Detalle
> > FROM deleted
> > WHERE Detalle.CarritID = deleted.CarritID
> > AND Detalle.CodProduct = deleted.CodProduct
> > AND Detalle.Estats = deleted.Estats
> > GO
> >
> > Si borro el registro en Maestro, debe eliminar los hijos en Detalle.
> > Pero ni siquiera se ejecuta el -print 'trigger delete'-
> >
> > Los tres campos en el WHERE son la PK de Maestro.
> >
> > ¿Alguien puede decirme que esta mal?
> > El trigger no se ejecuta y me da error en el delete del registro en
> Maestro.
> >
> > Gracias
> > MV
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida