• No results found

Ejercicios de Triggers (I)

N/A
N/A
Protected

Academic year: 2021

Share "Ejercicios de Triggers (I)"

Copied!
19
0
0

Loading.... (view fulltext now)

Full text

(1)

Ejercicios de triggers

Ejercicios de triggers

(I).

(I).

Alejandro Alonso Taratiel.

Alejandro Alonso Taratiel.

1º ASIR.

1º ASIR.

Base de datos.

Base de datos.

Prof.: Santiago Blanco.

Prof.: Santiago Blanco.

(2)

Página - 1 - de 19 Página - 1 - de 19

ÍNDICE

ÍNDICE

Ejemplos de triggers... 2 Ejemplos de triggers... 2 -Ejem Ejemplo_1 ...plo_1 ...- ...- 2 2 Probamos el ejemplo_1. ... 7 Probamos el ejemplo_1. ... 7

(3)

-Página - 2 - de 19 Página - 2 - de 19

Ejemplos de triggers.

Ejemplos de triggers.

Ejemplo_1

Ejemplo_1

1.

1. Un ejemplo de triggers para el control de Stock.Un ejemplo de triggers para el control de Stock. Comandos: Comandos: USE master USE master GO GO IF EXISTS

IF EXISTS (SELECT NAME FROM sys.databases(SELECT NAME FROM sys.databases WHERE name = 'StockArticulos')

WHERE name = 'StockArticulos') BEGIN

BEGIN

DROP DATABASE StockArticulos DROP DATABASE StockArticulos END

END

CREATE DATABASE Sto

CREATE DATABASE StockArticulckArticulosos GO

GO Resultados: Resultados:

Command(s) completed successfully. Command(s) completed successfully.

(4)

Página - 3 - de 19 Página - 3 - de 19 Comandos: Comandos: USE StockArticulos USE StockArticulos GO GO

CREATE TABLE dbo.Articulos (ID INT PRIMARY KEY,

CREATE TABLE dbo.Articulos (ID INT PRIMARY KEY, NOMBRENOMBRE VARCHAR(100

VARCHAR(100),STOCK DECIMAL ),STOCK DECIMAL (18,2))(18,2)) GO

GO

CREATE TABLE dbo.Movimientos (TRANSACCION I

CREATE TABLE dbo.Movimientos (TRANSACCION INT,FECHANT,FECHA DATE DEFAULT(GETDATE()),ARTICU

DATE DEFAULT(GETDATE()),ARTICULO_ID INT LO_ID INT FOREIGN KEYFOREIGN KEY REFERENCES DBO.ARTICULOS(ID),CANTIDA

REFERENCES DBO.ARTICULOS(ID),CANTIDAD D DECIMAL(18,2),DECIMAL(18,2), TIPO CHAR(1) CHECK (TIPO ='I' OR TIPO =

TIPO CHAR(1) CHECK (TIPO ='I' OR TIPO = 'O'))'O')) GO

GO Resultados: Resultados:

Command(s) completed successfully. Command(s) completed successfully.

(5)

Página - 4 - de 19 Página - 4 - de 19 2.

2. Insertamos registros a la tabla Artículos.Insertamos registros a la tabla Artículos. Comandos:

Comandos: INSERT I

INSERT INTO dbo.Articulos(ID,NOMBRNTO dbo.Articulos(ID,NOMBRE,STOCK) VE,STOCK) VALUESALUES (1,'Monitores',0),(2,'CPU',0),(3,'Mouse',0) (1,'Monitores',0),(2,'CPU',0),(3,'Mouse',0) GO GO Resultados: Resultados: (3 row(s) affected) (3 row(s) affected)

(6)

Página - 5 - de 19 Página - 5 - de 19 3.

3. Creamos los triggers para tener actualizado los artículos.Creamos los triggers para tener actualizado los artículos. No retorna el mensaje de cantidad de registros afectados. No retorna el mensaje de cantidad de registros afectados. Comandos:

Comandos:

CREATE TRIGGER dbo.MovimientosInse

CREATE TRIGGER dbo.MovimientosInsert rt ON dbo.MovimientosON dbo.Movimientos FOR INSERT FOR INSERT AS AS BEGIN BEGIN SET NOCOUNT ON SET NOCOUNT ON UPDATE DBO.ARTICULOS UPDATE DBO.ARTICULOS

SET STOCK = STOCK + T.PARCIAL SET STOCK = STOCK + T.PARCIAL FROM DBO.ARTICULOS A FROM DBO.ARTICULOS A INNER JOIN INNER JOIN ( SELECT ARTICULO_ID, ( SELECT ARTICULO_ID,

SUM(CASE WHEN TIPO='I' THEN CANTIDA

SUM(CASE WHEN TIPO='I' THEN CANTIDAD ELSE D ELSE --CANTIDAD END)

CANTIDAD END)

AS PARCIAL FROM INSERTED AS PARCIAL FROM INSERTED GROUP BY ARTICULO_ID GROUP BY ARTICULO_ID ) T ) T ON ON A.ID =

A.ID = T.ARTICULT.ARTICULO_IDO_ID END END GO GO Resultados: Resultados:

Command(s) completed successfully. Command(s) completed successfully.

(7)

Página - 6 - de 19 Página - 6 - de 19 4.

4. Creamos los triggers para tener actualizado los artículos.Creamos los triggers para tener actualizado los artículos. No retorna el mensaje de cantidad de registros afectados. No retorna el mensaje de cantidad de registros afectados. Comandos:

Comandos:

CREATE TRIGGER dbo.Movimientosdele

CREATE TRIGGER dbo.Movimientosdelete ON te ON dbo.Movimiendbo.Movimientostos FOR INSERT FOR INSERT AS AS BEGIN BEGIN SET NOCOUNT ON SET NOCOUNT ON UPDATE dbo.Articulos UPDATE dbo.Articulos

SET STOCK = STOCK - T.PARCIAL SET STOCK = STOCK - T.PARCIAL FROM dbo.Articulos A FROM dbo.Articulos A INNER JOIN INNER JOIN ( SELECT ARTICULO_ID, ( SELECT ARTICULO_ID,

SUM(CASE WHEN TIPO='I' THEN CANTIDA

SUM(CASE WHEN TIPO='I' THEN CANTIDAD ELSE D ELSE --CANTIDAD END)

CANTIDAD END)

AS PARCIAL FROM DELETED AS PARCIAL FROM DELETED GROUP BY ARTICULO_ID GROUP BY ARTICULO_ID ) T ) T ON ON A.ID =

A.ID = T.ARTICULT.ARTICULO_IDO_ID END END GO GO Resultados: Resultados:

Command(s) completed successfully. Command(s) completed successfully.

(8)

Página - 7 - de 19 Página - 7 - de 19

Probamos el ejemplo_1.

Probamos el ejemplo_1.

5.

5. Mostremos el Stock actual.Mostremos el Stock actual. Comandos:

Comandos:

SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A Resultados: Resultados: 1 1 Monitores Monitores 0.000.00 2 2 CPU CPU 0.000.00 3 3 Mouse Mouse 0.000.00

(9)

Página - 8 - de 19 Página - 8 - de 19 6.

6. Insertemos un registro para el artículo 1.Insertemos un registro para el artículo 1. Comandos:

Comandos:

INSERT INTO

INSERT INTO dbo.Movimidbo.Movimientosentos

(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES

VALUES (1,1,GETDA(1,1,GETDATE(),100,'I')TE(),100,'I') Resultados:

Resultados:

(1 row(s) affected) (1 row(s) affected)

(10)

Página - 9 - de 19 Página - 9 - de 19 7.

7. Mostremos el Stock actual para el ID 1Mostremos el Stock actual para el ID 1 Comandos:

Comandos:

SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A WHERE A.ID = 1 WHERE A.ID = 1 Resultados: Resultados: 1 1 Monitores Monitores 100.00100.00

(11)

Página - 10 - de 19 Página - 10 - de 19 8.

8. Insertemos otros registros.Insertemos otros registros. Comandos:

Comandos:

INSERT INTO dbo.Movimientos INSERT INTO dbo.Movimientos

(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES (

VALUES (2,1,GETDA2,1,GETDATE(),10,'I'), TE(),10,'I'), (3,1,GETDA(3,1,GETDATE(),5,'O'),TE(),5,'O'), (4,2,GETDATE(),5,'I') (4,2,GETDATE(),5,'I') Resultados: Resultados: (3 row(s) affected) (3 row(s) affected)

(12)

Página - 11 - de 19 Página - 11 - de 19 9.

9. Mostremos el Stock actual para el ID 1.Mostremos el Stock actual para el ID 1. Comandos:

Comandos:

SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A WHERE A.ID = 1 WHERE A.ID = 1 Resultados: Resultados: 1 1 Monitores Monitores 105.00105.00

(13)

Página - 12 - de 19 Página - 12 - de 19 10.

10. Eliminemos la transacción (1) de Eliminemos la transacción (1) de cantidad = 100.cantidad = 100. Comandos:

Comandos:

DELETE FROM dbo.Movimientos WHERE TRANSA

DELETE FROM dbo.Movimientos WHERE TRANSACCION = CCION = 11 Resultados:

Resultados:

(1 row(s) affected) (1 row(s) affected)

(14)

Página - 13 - de 19 Página - 13 - de 19 11.

11. Eliminemos la transaccEliminemos la transacción (3) ión (3) de cantidad = 5de cantidad = 5 Comandos:

Comandos:

DELETE FROM dbo.Movimientos WHERE TRANSA

DELETE FROM dbo.Movimientos WHERE TRANSACCION = CCION = 33 Resultados:

Resultados:

(1 row(s) affected) (1 row(s) affected)

(15)

Página - 14 - de 19 Página - 14 - de 19 12.

12. Mostremos el stock actual de la tMostremos el stock actual de la tabla Artículos.abla Artículos. Comandos:

Comandos:

SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A Resultados: Resultados: 1 1 Monitores Monitores 105.00105.00 2 2 CPU CPU 5.005.00 3 3 Mouse Mouse 0.000.00

(16)

Página - 15 - de 19 Página - 15 - de 19 13.

13. Eliminamos todos los movimientos realizados.Eliminamos todos los movimientos realizados. Comandos:

Comandos:

DELETE FROM dbo.Movimientos DELETE FROM dbo.Movimientos Resultados:

Resultados:

(2 row(s) affected) (2 row(s) affected)

(17)

Página - 16 - de 19 Página - 16 - de 19 14.

14. Deshabilitar los triggers.Deshabilitar los triggers. Comandos:

Comandos:

ALTER TABLE dbo.Movimientos DISABLE TRIGGER ALL ALTER TABLE dbo.Movimientos DISABLE TRIGGER ALL Resultados:

Resultados:

Command(s) completed successfully. Command(s) completed successfully.

(18)

Página - 17 - de 19 Página - 17 - de 19 15.

15. Mostremos lo que pasa se insertamos un registro en la tabla.Mostremos lo que pasa se insertamos un registro en la tabla. Movimientos que tiene deshabilitados los triggers.

Movimientos que tiene deshabilitados los triggers. Comandos:

Comandos:

INSERT INTO

INSERT INTO dbo.Movimidbo.Movimientosentos

(TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) (TRANSACCION,ARTICULO_ID,FECHA,CANTIDAD,TIPO) VALUES

VALUES (1,1,GETDA(1,1,GETDATE(),100,'I')TE(),100,'I') Resultados:

Resultados:

(1 row(s) affected) (1 row(s) affected)

(19)

Página - 18 - de 19 Página - 18 - de 19 16.

16. Mostremos el stock actual de la tMostremos el stock actual de la tabla Artículos.abla Artículos. Comandos:

Comandos:

SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A SELECT A.ID, A.NOMBRE, A.STOCK FROM dbo.Articulos A Resultados: Resultados: 1 1 Monitores Monitores 105.00105.00 2 2 CPU CPU 5.005.00 3 3 Mouse Mouse 0.000.00

References

Related documents

As long as proper rights are present to do so (DBO rights on the database for the Windows user running the upgrade), the Security Manager installer will update the database to

Collects personal information and simplify managing the foreign key is only if the schema name, provide high quality blog post message envelope structure collection of dbo schema

The liability recognized in the statements of financial position in respect of defined benefit pension plans is the present value of the defined benefit obligation (DBO) at

The main construction contractor or the DBO contractor shall provide a copy of the survey report or certificate confirming that testing of the building services has been carried out

You will be granted to python in an expiration time you are user in python sql create schema test_schema owned by creating dbo schema example is unoptimized queries as tables..

Engaged 8 faculty QM Leaders and 2 instructional designers, representing each of the Colleges and University Extended Education, in taking the Quality Matters "Applying the

You can then go into Scoreboard and create the database connection using the login account that you created above.. The newly created tables should appear as owned by "dbo"

Note: RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database..