· 4 years ago · Mar 08, 2021, 10:44 AM
1CREATE DATABASE IF NOT EXISTS db11552
2 CHARACTER SET = 'utf8'
3 COLLATE = 'utf8_unicode_ci';
4
5USE db11552;
6
7DROP TABLE IF EXISTS museo_utenti;
8
9CREATE TABLE museo_utenti
10(
11 cod_prenot SMALLINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
12 nome NVARCHAR(20) NOT NULL,
13 cognome NVARCHAR(20) NOT NULL,
14 data_visita DATE NOT NULL,
15 area VARCHAR(6) NOT NULL,
16 num_part TINYINT NOT NULL,
17 prezzo FLOAT NOT NULL
18);
19
20DROP PROCEDURE IF EXISTS museo_nuovaprenot;
21DELIMITER //
22CREATE PROCEDURE museo_nuovaprenot(
23
24 param_nome VARCHAR(20),
25 param_cognome VARCHAR(20),
26 param_data_visita DATE,
27 param_area VARCHAR(6),
28 param_num_part TINYINT,
29 param_prezzo FLOAT
30)
31 DETERMINISTIC
32BEGIN
33if not EXISTS (select 1 from museo_utenti where area = param_area and data_visita = param_data_visita) THEN
34 INSERT INTO museo_utenti(nome, cognome, data_visita, area, num_part, prezzo)
35 VALUES (param_nome, param_cognome, param_data_visita, param_area, param_num_part, param_prezzo);
36ELSE
37 SIGNAL SQLSTATE '01000'
38 SET MESSAGE_TEXT = 'Impossibile registrare la prenotazione';
39end if;
40END //
41DELIMITER ;
42
43CALL museo_nuovaprenot('Luca', 'Rossi', '2020-04-01', 'rossa', 5, 70.00);
44CALL museo_nuovaprenot('Lucia', 'Bianchi', '2020-04-02', 'verde', 4, 40.00);
45CALL museo_nuovaprenot('Marco', 'Neri', '2020-04-03', 'rossa', 6, 50.00);
46CALL museo_nuovaprenot('maria', 'Rossi', '2020-04-01', 'rossa', 5, 70.00);
47
48
49