desencadenantes

08/07/2007 - 19:47 por roberto tactac | Informe spam
Hola a todos
Hace unos meses que estoy con SQL y necesito un ayuda para crear un
desencadenante en la tabla de articulos, Las tablas son:

SQL server 2000

Articulos (idarticulo,detalle,precioventa,,)
existencia(idarticulo,iddeposito,cantidad)
depositos(iddeposito,nombre,idciudad,idsucursal,fechaultinventario)


El requerimiento seria cada vez que se ingresa un articulo nuevo agregue las
filas correspondiente en la tabla de existencias teniendo en cuenta la
cantidad de depositos que halla, osea que tendria que agregar un registro
por cada deposito

Bueno , muchas gracias de antemano a quien me pueda ayudar

Roberto tactac
Buenos Aires - Argentina
rtactac@gmail.com

Preguntas similare

Leer las respuestas

#1 Ricardo Passians
08/07/2007 - 21:14 | Informe spam
El requerimiento seria cada vez que se ingresa un articulo nuevo agregue
las filas correspondiente en la tabla de existencias teniendo en cuenta la
cantidad de depositos que halla, osea que tendria que agregar un registro
por cada deposito



Imagino que te refieres a crear un registro con la existencia en cero para
depósito y artículo. Para luego ir actualizado la existencia allí. Es asi?
Si lo es ,creo que es un error de diseño porque desperdicia espacio sin
necesidad. Para recuperar bastaría con Left Join's y usar ISNULL.
Además, puede que debas considerar mejor una vista indizada ya que de no
tenerla, te exigirá varios triggers en varias tablas con lo cual ese diseño
será más difícil de mantener.

De todos modos, si te comprendí bien, el trigger que estas pidiendo para la
tabla Existencia sería algo como esto: (Pero ten presente que debes tener
uno similar también para la tabla Depósitos, pues es lógico que estos no
sean estáticos necesariamente, como parece que estás suponiendo).

create trigger tr_IUD_existencia ON dbo.existencia
for Insert, Update, Delete
AS
delete Existencia
from Existencia inner join Deleted D on Existencia.idarticulo=D.idarticulo

depósito/artículo
insert Existencia (idarticulo, iddeposito, cantidad)
select I.idarticulo, Depositos.iddeposito,0 from inserted I
CROSS JOIN Depositos

/* el truco está en el Cross Join*/


Saludos

Ricardo Passians
Respuesta Responder a este mensaje
#2 principiante
09/07/2007 - 12:34 | Informe spam
Además, puede que debas considerar mejor una vista indizada ya que de no
tenerla, te exigirá varios triggers en varias tablas con lo cual ese
diseño será más difícil de mantener.




Totalmente de acuerdo.

No entiendo por que alguna gente a veces prefiere irse por el camino mas
complicado.


Jose TH
Respuesta Responder a este mensaje
#3 Alfredo Novoa
09/07/2007 - 14:02 | Informe spam
On Mon, 9 Jul 2007 06:34:42 -0400, "principiante"
wrote:

No entiendo por que alguna gente a veces prefiere irse por el camino mas
complicado.



Eso pasa por que mucha gente no se lee los manuales.


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