Trigger Delete para varios regs

28/01/2005 - 20:41 por Axel | Informe spam
Segun yo el siguiente trigger funciona solo para cuando se hace un borrado de
registro por registro, pero si hiciera el borrado de varios a la vez creo que
solo borraria la ultima linea de la tabla F570501A.

? Como podre hacer para que se borren todos tomando en cuenta que la llave
de F550501A es CSIMCPTAL y CSIMCVESER ?

CREATE TRIGGER Delete_JDE_F570501A ON [cat_servicios]
FOR DELETE
AS

DECLARE @almacen varchar (13), @CveSer varchar (3), @Desc varchar(30) ,
@JDEDate int, @JDETime int, @Today datetime

SELECT @almacen=clas_ptal, @CveSer=Cve_servicio FROM DELETED

DELETE FROM PRODDTA.F570501A WHERE CSIMCPTAL=@almacen AND CSIMCVESER=@CveSer

De antemando muchas gracias al Maestro en SQL que pueda ayudarme
Atte.
Axel Espn

Preguntas similare

Leer las respuestas

#1 Maxi
28/01/2005 - 21:20 | Informe spam
Hola, los triggers disponen de 2 tablas (inserted y deleted) las cuales
podriamos usar, entonces:

CREATE TRIGGER Delete_JDE_F570501A ON [cat_servicios]
FOR DELETE
AS

DECLARE @almacen varchar (13), @CveSer varchar (3), @Desc varchar(30) ,
@JDEDate int, @JDETime int, @Today datetime

SELECT @almacen=clas_ptal, @CveSer=Cve_servicio FROM DELETED

DELETE PRODDTA.F570501A
FROM PRODDTA.F570501A INNER JOIN DELETED ON
PRODDTA.F570501A.CSIMCPTAL = DELETED.CLAS_PTAL AND
PRODDTA.F570501A.CSIMCVESER = DELETED.CVE_SERVICIO



pd: probalo por las dudas ;)




Salu2
Maxi


"Axel" <axel_espn@(borrar)hotmail.com> escribió en el mensaje
news:
Segun yo el siguiente trigger funciona solo para cuando se hace un borrado
de
registro por registro, pero si hiciera el borrado de varios a la vez creo
que
solo borraria la ultima linea de la tabla F570501A.

? Como podre hacer para que se borren todos tomando en cuenta que la
llave
de F550501A es CSIMCPTAL y CSIMCVESER ?

CREATE TRIGGER Delete_JDE_F570501A ON [cat_servicios]
FOR DELETE
AS

DECLARE @almacen varchar (13), @CveSer varchar (3), @Desc varchar(30) ,
@JDEDate int, @JDETime int, @Today datetime

SELECT @almacen=clas_ptal, @CveSer=Cve_servicio FROM DELETED

DELETE FROM PRODDTA.F570501A WHERE CSIMCPTAL=@almacen AND
CSIMCVESER=@CveSer

De antemando muchas gracias al Maestro en SQL que pueda ayudarme
Atte.
Axel Espn
Respuesta Responder a este mensaje
#2 Eladio Rincón
28/01/2005 - 21:25 | Informe spam
Hola,

deberás hacer un join entre la tabla virtual deleted in la tabla de la que
deseas borrar las filas:

DELETE <tabla> FROM <tabla> inner join deleted
on <tabla>.key = deleted.key



Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Axel" <axel_espn@(borrar)hotmail.com> wrote in message
news:
Segun yo el siguiente trigger funciona solo para cuando se hace un borrado


de
registro por registro, pero si hiciera el borrado de varios a la vez creo


que
solo borraria la ultima linea de la tabla F570501A.

? Como podre hacer para que se borren todos tomando en cuenta que la


llave
de F550501A es CSIMCPTAL y CSIMCVESER ?

CREATE TRIGGER Delete_JDE_F570501A ON [cat_servicios]
FOR DELETE
AS

DECLARE @almacen varchar (13), @CveSer varchar (3), @Desc varchar(30) ,
@JDEDate int, @JDETime int, @Today datetime

SELECT @almacen=clas_ptal, @CveSer=Cve_servicio FROM DELETED

DELETE FROM PRODDTA.F570501A WHERE CSIMCPTAL=@almacen AND


CSIMCVESER=@CveSer

De antemando muchas gracias al Maestro en SQL que pueda ayudarme
Atte.
Axel Espn
Respuesta Responder a este mensaje
#3 Luis Enrique García A.
29/01/2005 - 00:59 | Informe spam
Bueno, el tigger FOR DELETE, se dispara cuando borras un registro, es decir,
si la instruccion de borrado, elimina 1000 registros, la misma cantidad de
veces k se llamara al trigger.

Adicionalmente, ya sea k uses un inner join como te comentan (a lo cual me
uno tambien) o como lo estas haciendo,
lo que hace tu delete es eliminar TODOS los registros de las tablas que
coincidan con tu WHERE.

Luis E.


"Axel" <axel_espn@(borrar)hotmail.com> escribió en el mensaje
news:
Segun yo el siguiente trigger funciona solo para cuando se hace un borrado


de
registro por registro, pero si hiciera el borrado de varios a la vez creo


que
solo borraria la ultima linea de la tabla F570501A.

? Como podre hacer para que se borren todos tomando en cuenta que la


llave
de F550501A es CSIMCPTAL y CSIMCVESER ?
> CREATE TRIGGER Delete_JDE_F570501A ON [cat_servicios]
FOR DELETE
AS

DECLARE @almacen varchar (13), @CveSer varchar (3), @Desc varchar(30) ,
@JDEDate int, @JDETime int, @Today datetime

SELECT @almacen=clas_ptal, @CveSer=Cve_servicio FROM DELETED

DELETE FROM PRODDTA.F570501A WHERE CSIMCPTAL=@almacen AND


CSIMCVESER=@CveSer

De antemando muchas gracias al Maestro en SQL que pueda ayudarme
Atte.
Axel Espn
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida