Ejercicios de Triggers (I)

April 20, 2017 | Author: vlexxx | Category: N/A
Share Embed Donate


Short Description

Download Ejercicios de Triggers (I)...

Description

Ejercicios de triggers (I).

Alejandro Alonso Taratiel. 1º ASIR. Base de datos. Prof.: Santiago Blanco.

ÍNDICE Ejemplos de triggers..................................................................................................- 2 Ejemplo_1 Ejemplo_1............................. ............................................... .................................. .................................. .................................... ......................................- 2 Probamos el ejemplo_1. ........................................................................................- 7 -

Página - 1 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

Ejemplos de triggers. Ejemplo_1 1. Un ejemplo de triggers para el control de Stock. Comandos: USE master GO IF EXISTS (SELECT NAME FROM sys.databases WHERE name = 'StockArticulos') BEGIN DROP DATABASE StockArticulos END CREATE DATABASE StockArticul Sto ckArticulos os GO

Resultados: Command(s) completed successfully.

Página - 2 - de 19

01/06/2012

Comandos: USE StockArticulos GO CREATE TABLE dbo.Articulos (ID INT PRIMARY KEY, NOMBRE VARCHAR(100),STOCK VARCHAR(100),STOCK DECIMAL (18,2)) GO CREATE TABLE dbo.Movimientos (TRANSACCION INT,FECHA I NT,FECHA DATE DEFAULT(GETDATE()),ARTICULO_ID DEFAULT(GETDATE()),ARTICULO_ID INT FOREIGN KEY REFERENCES DBO.ARTICULOS(ID),CANTIDAD DBO.ARTICULOS(ID),CANTIDAD DECIMAL(18,2), TIPO CHAR(1) CHECK (TIPO ='I' OR TIPO = 'O')) GO

Resultados: Command(s) completed successfully.

Página - 3 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

2. Insertamos registros a la tabla Artículos. Comandos: INSERT INTO I NTO dbo.Articulos(ID,NOMBRE,STOCK) dbo.Articulos(ID,NOMBRE,STOCK) VALUES V ALUES (1,'Monitores',0),(2,'CPU',0),(3,'Mouse',0) GO

Resultados: (3 row(s) affected)

Página - 4 - de 19

3. Creamos los triggers para tener actualizado los artículos. No retorna el mensaje de cantidad de registros afectados. Comandos: CREATE TRIGGER dbo.MovimientosInsert dbo.MovimientosInsert ON dbo.Movimientos FOR INSERT 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 CANTIDAD ELSE CANTIDAD END) AS PARCIAL FROM INSERTED GROUP BY ARTICULO_ID )T ON A.ID = T.ARTICULO_ID T.ARTICULO_ID END GO

Resultados: Command(s) completed successfully.

Página - 5 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

4. Creamos los triggers para tener actualizado los artículos. No retorna el mensaje de cantidad de registros afectados. Comandos: CREATE TRIGGER dbo.Movimientosdelete dbo.Movimientosdelete ON dbo.Movimientos dbo.Movimientos FOR INSERT 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 CANTIDAD ELSE CANTIDAD END) AS PARCIAL FROM DELETED GROUP BY ARTICULO_ID )T ON A.ID = T.ARTICULO_ID T.ARTICULO_ID END GO

Resultados: Command(s) completed successfully.

Página - 6 - de 19

Probamos el ejemplo_1. 5. Mostremos el Stock actual. Comandos: SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A

Resultados: 1 2 3

Monitores CPU Mouse

0.00 0.00 0.00

Página - 7 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

6. Insertemos un registro para el artículo 1. Comandos: INSERT INTO dbo.Movimientos dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (1,1,GETDATE(),100,'I') (1,1,GETDATE(),100,'I')

Resultados: (1 row(s) affected)

Página - 8 - de 19

7. Mostremos el Stock actual para el ID 1 Comandos: SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A WHERE A.ID = 1

Resultados: 1

Monitores

100.00

Página - 9 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

8. Insertemos otros registros. Comandos: INSERT INTO dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (2,1,GETDA ( 2,1,GETDATE(),10,'I'), TE(),10,'I'), (3,1,GETDATE(),5,'O'), (3,1,GETDATE(),5,'O'), (4,2,GETDATE(),5,'I')

Resultados: (3 row(s) affected)

Página - 10 - de 19

9. Mostremos el Stock actual para el ID 1. Comandos: SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A WHERE A.ID = 1

Resultados: 1

Monitores

105.00

Página - 11 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

10. Eliminemos la transacción (1) de cantidad = 100. Comandos: DELETE FROM dbo.Movimientos WHERE TRANSACCION TRANSACCION = 1

Resultados: (1 row(s) affected)

Página - 12 - de 19

11. Eliminemos la transacción transacción (3) de cantidad = 5 Comandos: DELETE FROM dbo.Movimientos WHERE TRANSACCION TRANSACCION = 3

Resultados: (1 row(s) affected)

Página - 13 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

12. Mostremos el stock actual de la tabla t abla Artículos. Comandos: SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A

Resultados: 1 2 3

Monitores CPU Mouse

105.00 5.00 0.00

Página - 14 - de 19

13. Eliminamos todos los movimientos realizados. Comandos: DELETE FROM dbo.Movimientos

Resultados: (2 row(s) affected)

Página - 15 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

14. Deshabilitar los triggers. Comandos: ALTER TABLE dbo.Movimientos DISABLE TRIGGER ALL

Resultados: Command(s) completed successfully.

Página - 16 - de 19

15. Mostremos lo que pasa se insertamos un registro en la tabla. Movimientos que tiene deshabilitados los triggers. Comandos: INSERT INTO dbo.Movimientos dbo.Movimientos (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (1,1,GETDATE(),100,'I') (1,1,GETDATE(),100,'I')

Resultados: (1 row(s) affected)

Página - 17 - de 19

Bases de Datos.

Alejandro Alonso Taratiel

01/06/2012

16. Mostremos el stock actual de la tabla t abla Artículos. Comandos: SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A

Resultados: 1 2 3

Monitores CPU Mouse

105.00 5.00 0.00

Página - 18 - de 19

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF