Ejercicios de Triggers (I)
April 20, 2017 | Author: vlexxx | Category: N/A
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