This repository has been archived by the owner on Jun 27, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrigger.txt
74 lines (65 loc) · 2.54 KB
/
Trigger.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
CREATE TRIGGER `VerStraordinario` AFTER INSERT ON `tratta`
FOR EACH ROW BEGIN
IF(NEW.Straordinario='False') THEN
UPDATE tratta SET Data_Inizio=NULL, Data_Fine=NULL
WHERE ID=NEW.ID;
END IF;
END
CREATE TRIGGER `OrarioLibero` BEFORE INSERT ON `controlla` FOR EACH ROW BEGIN
BEGIN
DECLARE pp TIME;
DECLARE ap TIME;
DECLARE flag INT(100);
DECLARE ErrorCode CONDITION FOR SQLSTATE '45000';
SET @err_mess = 'inserimento non valido orario già assegnato';
SET flag = 0;
SELECT tratta.Partenza_Previsto, tratta.Arrivo_Previsto INTO pp, ap
FROM (controlla JOIN treno ON NEW.Treno=treno.ID) JOIN tratta ON treno.Percorso=tratta.ID LIMIT 1;
SELECT COUNT(controlla.Treno) AS n INTO flag
FROM (controlla JOIN treno ON controlla.Treno=treno.ID) JOIN tratta ON treno.Percorso=tratta.ID
WHERE controlla.Controllore=NEW.Controllore AND (pp BETWEEN tratta.Partenza_Previsto AND tratta.Arrivo_Previsto OR ap BETWEEN tratta.Partenza_Previsto AND tratta.Arrivo_Previsto);
IF(flag>0)
THEN
SIGNAL ErrorCode SET MESSAGE_TEXT=@err_mess;
END IF;
END
CREATE TRIGGER `ControlloeCreaPrenotazione` BEFORE INSERT ON `biglietto` FOR EACH ROW
BEGIN
DECLARE type varchar(100);
DECLARE P INT(100);
DECLARE PO INT(100);
DECLARE ErrorCode CONDITION FOR SQLSTATE '45000';
SET @err_mess = 'ERRORE RENOTAZIONE NON VALIDA';
SET @err_mess2 = 'ERRORE PRENOTAZIONE NON VALIDA POSTI ESAURITI';
IF(NEW.Carrozza IS NOT NULL)
THEN
SELECT carrozza.Tipo INTO type
FROM carrozza
WHERE carrozza.ID=new.Carrozza;
IF(type<>'AltaVelocita')
THEN
SIGNAL ErrorCode SET MESSAGE_TEXT=@err_mess;
SET NEW.Carrozza=NULL;
ELSE
SELECT carrozza.Tipo, carrozza.Posti, compone2.Posti_Occupati INTO type, P, PO
FROM (biglietto JOIN carrozza ON NEW.Carrozza=carrozza.ID) JOIN compone2 ON carrozza.ID=compone2.Carrozza
WHERE NEW.Codice=biglietto.Codice;
IF(P=PO)
THEN
SIGNAL ErrorCode SET MESSAGE_TEXT=@err_mess2;
SET NEW.Carrozza=NULL;
ELSE
UPDATE compone2 SET compone2.Posti_Occupati=compone2.Posti_Occupati+1
WHERE compone2.Carrozza=NEW.Carrozza;
END IF;
END IF;
END IF;
END
CREATE TRIGGER `Controllo` BEFORE INSERT ON `carrozza`
FOR EACH ROW BEGIN
IF(NEW.Tipo='Regionale')
THEN
SET NEW.Posti_Occupati=NULL;
SET NEW.Posti=NULL;
END IF;
END