Insertar registros con un trigger en otra tabla

10/11/2006 - 13:06 por Angel Zapata | Informe spam
Hola a todos,
mi problema es el siguiente, tengo 3 tablas, una de artículos con los
siguientes campos(ArtCodigo, ArtDescripcion,.) otra de almacenes
con los siguientes campos (AlmCodigo, AlmNombre,.) y otra para
existencias con los siguientes campos (AlmacenCodigo, ArticuloCodigo,
..)

Estoy tratando de hacer un trigger de modo que cuando inserte un
registro en la tabla de ARTICULOS, me incluya un registro en la tabla
EXISTENCIAS por cada registro que exista en la tabla ALMACENES.

Y como estoy mas perdido que Colon en el oceano pues recurro a los
eruditos en la materia.

El codigo que yo he hecho es este pero no funciona.

CREATE TRIGGER InsertarArticuloAlmacen ON [dbo].[Articulo]
FOR INSERT
AS
DECLARE @Articulo as Integer, @Almacen as Smallint

DECLARE Articulos CURSOR FOR
SELECT ArtCodigo FROM Inserted
OPEN Articulos
FETCH Articulos
INTO @Articulo

DECLARE Almacenes CURSOR FOR
SELECT AlmCodigo
FROM Almacen

OPEN Almacenes

FETCH NEXT FROM Almacenes
INTO @Almacen
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ArticuloExistencias(AlmacenCodigo, ArticuloCodigo)
VALUES (@Almacen, @Articulo)
END
CLOSE Almacenes
CLOSE Articulos
DEALLOCATE Almacenes
DEALLOCATE Articulos

Muchas gracias por la ayuda
 

Leer las respuestas

#1 Javier Loria
10/11/2006 - 14:24 | Informe spam
Hola Angel:
Que tal:
CREATE TRIGGER InsertarArticuloAlmacen ON [dbo].[Articulo]
FOR INSERT
AS
INSERT INTO ArticuloExistencias(AlmacenCodigo, ArticuloCodigo)
SELECT AlmCodigo, ArtCodigo
FROM Almacen
CROSS JOIN Inserted
= Olvidandonos del *&#%^ cursor.
Por otra parte debes tambien recordar que si insertan un Almacen
deberias hacer los mismo con los articulos del Almacen. Para los borrados y
las actualizaciones deberia bastar con una Llave Foranea en cascada.
Saludos,

Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Angel Zapata" wrote in message
news:
Hola a todos,
mi problema es el siguiente, tengo 3 tablas, una de artículos con los
siguientes campos(ArtCodigo, ArtDescripcion,.) otra de almacenes
con los siguientes campos (AlmCodigo, AlmNombre,.) y otra para
existencias con los siguientes campos (AlmacenCodigo, ArticuloCodigo,
..)

Estoy tratando de hacer un trigger de modo que cuando inserte un
registro en la tabla de ARTICULOS, me incluya un registro en la tabla
EXISTENCIAS por cada registro que exista en la tabla ALMACENES.

Y como estoy mas perdido que Colon en el oceano pues recurro a los
eruditos en la materia.

El codigo que yo he hecho es este pero no funciona.

CREATE TRIGGER InsertarArticuloAlmacen ON [dbo].[Articulo]
FOR INSERT
AS
DECLARE @Articulo as Integer, @Almacen as Smallint

DECLARE Articulos CURSOR FOR
SELECT ArtCodigo FROM Inserted
OPEN Articulos
FETCH Articulos
INTO @Articulo

DECLARE Almacenes CURSOR FOR
SELECT AlmCodigo
FROM Almacen

OPEN Almacenes

FETCH NEXT FROM Almacenes
INTO @Almacen
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ArticuloExistencias(AlmacenCodigo, ArticuloCodigo)
VALUES (@Almacen, @Articulo)
END
CLOSE Almacenes
CLOSE Articulos
DEALLOCATE Almacenes
DEALLOCATE Articulos

Muchas gracias por la ayuda

Preguntas similares