Ayuda con un trigger

04/03/2009 - 20:34 por Nuria V P | Informe spam
SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P
...

VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me sale)
sobre la tabla VENTAS para que al insertar un registro vaya a LOTES a buscar
el lote de la dimension 1500 y le asigne ese valor al campo "lote" de la
tabla ventas

Podeis echarme una mano por favor?

Preguntas similare

Leer las respuestas

#1 Maxi
04/03/2009 - 20:48 | Informe spam
Nuria, pasanos como empezaste a escribir y donde te has trabado



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Total Consulting



"Nuria V P" escribió en el mensaje de
noticias:
SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P
...

VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me
sale) sobre la tabla VENTAS para que al insertar un registro vaya a LOTES
a buscar el lote de la dimension 1500 y le asigne ese valor al campo
"lote" de la tabla ventas

Podeis echarme una mano por favor?

Respuesta Responder a este mensaje
#2 Nuria V P
04/03/2009 - 21:20 | Informe spam
Pues he probado de muchas maneras, las ultimas

UPDATE Ventas SET Ventas.Lote = [Lotes]![Lote] where dimension00 -
me actualiza toda la tabla ventas y no el registro recien insertado como
necesito

UPDATE inserted SET inserted.Lote = [Lotes]![Lote] where
imension00 --me dice que las tablas logicas no pueden actualizarse,

etc. pero no doy con ello


"Maxi" escribió en el mensaje
news:
Nuria, pasanos como empezaste a escribir y donde te has trabado



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Total Consulting



"Nuria V P" escribió en el mensaje de
noticias:
SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P
...

VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me
sale) sobre la tabla VENTAS para que al insertar un registro vaya a LOTES
a buscar el lote de la dimension 1500 y le asigne ese valor al campo
"lote" de la tabla ventas

Podeis echarme una mano por favor?

Respuesta Responder a este mensaje
#3 Alejandro Mesa
04/03/2009 - 21:27 | Informe spam
Nuria V P,

Trata con un trigger tipo "instead of" para que no tengas que actualizar esa
columna despues de la insercion.

create trigger dbo.tr_ventas_io_ins on dbo.ventas
instead of insert
as
if @@rowcount = 0 return;

set nocount;

insert into dbo.ventas(articulo, unidades, lote)
select
i.articulo,
i.unidades,
d.lote
from
inserted as i
cross join
(select l.lote from dbo.lotes as l where l.dimension = 1500) as d;
go


AMB

"Nuria V P" wrote:

SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P


VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me sale)
sobre la tabla VENTAS para que al insertar un registro vaya a LOTES a buscar
el lote de la dimension 1500 y le asigne ese valor al campo "lote" de la
tabla ventas

Podeis echarme una mano por favor?



Respuesta Responder a este mensaje
#4 Nuria V P
04/03/2009 - 22:47 | Informe spam
Estupendo, sí, me vale. No sabía nada de este tipo de triggers, soy
principiante.

Gracias Alejandro


"Alejandro Mesa" escribió en el
mensaje news:
Nuria V P,

Trata con un trigger tipo "instead of" para que no tengas que actualizar
esa
columna despues de la insercion.

create trigger dbo.tr_ventas_io_ins on dbo.ventas
instead of insert
as
if @@rowcount = 0 return;

set nocount;

insert into dbo.ventas(articulo, unidades, lote)
select
i.articulo,
i.unidades,
d.lote
from
inserted as i
cross join
(select l.lote from dbo.lotes as l where l.dimension = 1500) as d;
go


AMB

"Nuria V P" wrote:

SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P


VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me
sale)
sobre la tabla VENTAS para que al insertar un registro vaya a LOTES a
buscar
el lote de la dimension 1500 y le asigne ese valor al campo "lote" de la
tabla ventas

Podeis echarme una mano por favor?



Respuesta Responder a este mensaje
#5 Jose Mariano Alvarez
05/03/2009 - 01:59 | Informe spam
Como relacionas la tabla lotes con la de ventas?
Cual es la PK de ambas tablas?
Sin eso no se puede hacer nada ya que no hay manera de elegir un registro de
la tabla lotes porque al insertar la venta no tienes el atributo dimensión.


Saludos


Ing. Jose Mariano Alvarez
http://blog.josemarianoalvarez.com/
Microsoft MVP
SQLTotal Consulting

(Cambia los ceros por O y saca lo que sobra)

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por
favor tratar de indicar la versión de SQL y Service Pack. La inclusión de
(CREATE, INSERTS, etc.) para poder reproducir el problema también ayuda.










"Nuria V P" wrote in message
news:
SQL 2005

Hola, gracias anticipadas por vuestro tiempo:

Tengo una tabla VENTAS y otra LOTES

LOTES:

Dimension lote
1500 A
1420 G
342 P
...

VENTAS

articulo unidades LOTE
3 345 A (este valor va a buscarlo a LOTES para la
Dimension 1500)


Estoy haciendo lo que deberia ser un sencillo trigger (pero que no me
sale) sobre la tabla VENTAS para que al insertar un registro vaya a LOTES
a buscar el lote de la dimension 1500 y le asigne ese valor al campo
"lote" de la tabla ventas

Podeis echarme una mano por favor?

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