vivero

Páginas: 4 (923 palabras) Publicado: 22 de julio de 2013
– Un ejemplo de triggers para el control de Stock
USE master
GO
IF EXISTS (SELECT NAME FROM sys.databases
           WHERE name = ‘StockArticulos’)
  BEGIN
    DROP DATABASE StockArticulos  END
CREATE DATABASE StockArticulos
GO
USE StockArticulos
GO
CREATE TABLE dbo.Articulos (ID INT PRIMARY KEY, NOMBRE VARCHAR(100),STOCK DECIMAL(18,2))
GO
CREATE TABLE dbo.Movimientos(TRANSACCION INT,FECHA DATEDEFAULT(GETDATE()),ARTICULO_ID INT FOREIGN KEY
REFERENCES DBO.ARTICULOS(ID),CANTIDAD DECIMAL(18,2), TIPO CHAR(1) CHECK (TIPO =’I’ OR TIPO = ‘O’))
GO
– Insertamos registros ala tabla Articulos
INSERT INTO dbo.Articulos(ID,NOMBRE,STOCK) VALUES (1,’Monitores’,0),(2,’CPU’,0),(3,’Mouse’,0)
GO
– Creamos los triggers para tener actualizado los articulos
CREATETRIGGER dbo.MovimientosInsert ON dbo.Movimientos
FOR INSERT
AS
BEGIN
  — No retorna el mensaje de cantidad de registros afectados
  SET NOCOUNT ON  
  UPDATE DBO.ARTICULOS
  SET STOCK = STOCK +T.PARCIAL
  FROM DBO.ARTICULOS A
  INNER JOIN
  ( SELECT ARTICULO_ID,
    SUM(CASE WHEN TIPO=’I’ THEN CANTIDAD ELSE -CANTIDAD END)
    AS PARCIAL FROM INSERTED
    GROUP BY ARTICULO_ID
   ) T   ON   
   A.ID = T.ARTICULO_ID
END
GO
CREATE TRIGGER dbo.MovimientosDelete ON dbo.Movimientos
FOR DELETE
AS
BEGIN
  — No retorna el mensaje de cantidad de registros afectados
  SET NOCOUNT ON   UPDATE dbo.Articulos
  SET STOCK = STOCK – T.PARCIAL
  FROM dbo.Articulos A
  INNER JOIN
  ( SELECT ARTICULO_ID,
    SUM(CASE WHEN TIPO=’I’ THEN CANTIDAD ELSE -CANTIDAD END)    AS PARCIAL FROM DELETED
    GROUP BY ARTICULO_ID
   ) T
   ON
   A.ID = T.ARTICULO_ID
END
GO
– Probemos el ejercicio
– Mostremos el Stock actual
SELECT A.ID,A.NOMBRE,A.STOCK FROM dbo.Articulos A
–Insertemos un registro para el articulo 1
INSERT INTO dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO)
VALUES (1,1,GETDATE(),100,’I')
– Mostremos el Stock actual para el ID 1...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • vivero
  • Viveros
  • Vivero
  • Viveros
  • que es un vivero
  • vivero
  • viveros
  • viveros

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS