none
ayuda con para ser un trigger RRS feed

  • Pregunta

  • Realizar triggers que permita mantener el stock actualizado de mis productos, es decir, debe sumar las recepciones restar las ventas y devolver al stock las notas de credito. Debe crear la tabla notas de credito con los siguintes campos, (num_nc, fecha, id_producto, cantidad) ayuda plis

    esta es la base

    create database Almacen;

    use Almacen;
    create table producto (id_producto int primary key, descripcion varchar(20), precio int);
    create table recepcion (num_recep int primary key, fecha date, id_producto int, cantidad int);
    create table boleta (numero int primary key, fecha date, id_producto int, cantidad int, total int);

    create table stock (id_producto int primary key, cantidad int)

    create trigger actualizar_producto---- no se si estoy bien o no ayuda
    on producto
    for insert , update
    as
    print 'producto registrado correctamente'
    go

    miércoles, 21 de junio de 2017 1:48

Respuestas

  • Aunque debes mantener la tabla [stock], los movimientos de productos provienen de las tablas [recepcion], [boleta] y [nota_credito] y es en estas donde debes crear los disparadores para que estos se ejecuten por cada sentencia INSERT / DELETE o UPDATE.

    Desde un dispararor DML se tiene acceso a las tablas virtuales [inserted] y [deleted] las cuales contienen las nuevas filas insertadas y filas eliminadas por la sentencia. Considera que una sentencia UPDATE primero elimina y luego inserta.

    Ejemplo:

    create trigger tr_recepcion_ins on dbo.recepcion
    for insert
    as
    -- adicionar al stock cuando se insertan una o mas recepciones
    update S
    set S.cantidad += I.cantidad
    from dbo.stock as S inner join inserted as I
    on S.id_producto = I.id_producto;
    GO

    Si una recepcion puede contener multiples lineas del mismo producto entonces puedes usar:

    create trigger tr_recepcion_ins on dbo.recepcion
    for insert
    as
    -- adicionar al stock cuando se insertan una o mas recepciones
    update dbo.stock
    set cantidad += (select sum(I.cantidad) from inserted as I where I.id_producto = stock.id_producto)
    ;
    GO

    Basado en lo anterior trata de crear el disparador para cuando se actualiza una recepcion (substraer la cantidad eliminada y adicionar la nueva cantidad insertada).

    Despues de esto te sera mas facil hacerlo para las notas de creditos y ventas.

    - ventas (substraer la cantidad vendida desde el inventario - INSERT)

    - nota de credito (adicionar la cantidad acreditada - INSERT)

    Espero esto te sea de ayuda.


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas







    miércoles, 21 de junio de 2017 12:55