Академический Документы
Профессиональный Документы
Культура Документы
[EJERCICIO TRIGGERS 1]
PRIMERO DE ASIR
Pgina 1
[EJERCICIO TRIGGERS 1]
Una vez ejecutado el cdigo vemos como se ha creado la base de datos perfectamente.
PRIMERO DE ASIR
Pgina 2
[EJERCICIO TRIGGERS 1]
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 DATE DEFAULT(GETDATE()),ARTICULO_ID INT FOREIGN KEY REFERENCES DBO.ARTICULOS(ID),CANTIDAD DECIMAL(18,2), TIPO CHAR(1) CHECK (TIPO ='I' OR TIPO = 'O')) GO Vemos que el cdigo se ejecuta perfectamente.
Comprobamos que despus de ejecutar el cdigo abrimos la base de datos StockArticulos y comprobamos que las tablas se han creado perfectamente.
PRIMERO DE ASIR
Pgina 3
[EJERCICIO TRIGGERS 1]
Hacemos la seleccin correspondiente para ver si se han creado y vemos que as es.
PRIMERO DE ASIR
Pgina 4
[EJERCICIO TRIGGERS 1]
PRIMERO DE ASIR
Pgina 5
[EJERCICIO TRIGGERS 1]
Como podemos ver, este trigger es casi idntico al anterior en cuestin estructural, pero como vemos, este entra en el caso de DELETE y el Stock ser Stock-t.parcial es decir los triggers que hemos utilizado, van a actualizar el Stock, a partir de la tabla movimientos.
CREATE TRIGGER dbo.MovimientosDelete ON dbo.Movimientos FOR DELETE AS BEGIN 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) AS T ON A.ID = T.ARTICULO_ID END GO
PRIMERO DE ASIR
Pgina 6
[EJERCICIO TRIGGERS 1]
Insertamos un registro para el artculo uno indicando que la cantidad de estos artculos los cuales son monitores es de 100 INSERT INTO dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (1,1,GETDATE(),100,I')
PRIMERO DE ASIR
Pgina 7
[EJERCICIO TRIGGERS 1]
PRIMERO DE ASIR
Pgina 8
[EJERCICIO TRIGGERS 1]
PRIMERO DE ASIR
Pgina 9
[EJERCICIO TRIGGERS 1]
Mostremos lo que pasa se insertamos un registro en la tabla movimientos que tiene deshabilitados los triggers. INSERT INTO dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (1,1,GETDATE(),100,I')
PRIMERO DE ASIR
Pgina 10
[EJERCICIO TRIGGERS 1]
PRIMERO DE ASIR
Pgina 11