corretto file 01_schema.sql
This commit is contained in:
parent
dc82506248
commit
de33e61496
2 changed files with 55 additions and 9 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
-- Schema tabelle – Gestione Corrieri
|
-- Schema tabelle – Gestione Corrieri
|
||||||
-- Allineato alle API: /utenti, /clienti, /cd campi, /prenotazioni
|
-- Allineato alle API: /utenti, /clienti, /consegne
|
||||||
-- ============================================================
|
-- ============================================================
|
||||||
|
|
||||||
USE corrieri;
|
USE corrieri;
|
||||||
|
|
@ -49,6 +49,8 @@ CREATE TABLE IF NOT EXISTS cliente (
|
||||||
|
|
||||||
-- ----------------------------------------------------------------
|
-- ----------------------------------------------------------------
|
||||||
-- Tabella consegna (API: GET/POST/PUT/DELETE /consegna)
|
-- Tabella consegna (API: GET/POST/PUT/DELETE /consegna)
|
||||||
|
-- DataRitiro e DataConsegna sono eventi indipendenti: nessun vincolo
|
||||||
|
-- di ordine tra le due date, solo retroattività rispetto a oggi.
|
||||||
-- ----------------------------------------------------------------
|
-- ----------------------------------------------------------------
|
||||||
CREATE TABLE IF NOT EXISTS consegna (
|
CREATE TABLE IF NOT EXISTS consegna (
|
||||||
ConsegnaID INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
ConsegnaID INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
|
@ -71,3 +73,45 @@ CREATE TABLE IF NOT EXISTS consegna (
|
||||||
) ENGINE=InnoDB
|
) ENGINE=InnoDB
|
||||||
DEFAULT CHARSET=utf8mb4
|
DEFAULT CHARSET=utf8mb4
|
||||||
COLLATE=utf8mb4_unicode_ci;
|
COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
|
||||||
|
-- ----------------------------------------------------------------
|
||||||
|
-- Trigger retroattività date (DataRitiro e DataConsegna >= oggi)
|
||||||
|
-- CURDATE() non è ammesso nei CHECK: validazione dinamica nei trigger.
|
||||||
|
-- ----------------------------------------------------------------
|
||||||
|
DROP TRIGGER IF EXISTS trg_consegna_no_retroattivita_insert;
|
||||||
|
DROP TRIGGER IF EXISTS trg_consegna_no_retroattivita_update;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
|
||||||
|
CREATE TRIGGER trg_consegna_no_retroattivita_insert
|
||||||
|
BEFORE INSERT ON consegna
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
IF NEW.DataRitiro < CURDATE() THEN
|
||||||
|
SIGNAL SQLSTATE '45000'
|
||||||
|
SET MESSAGE_TEXT = 'DataRitiro non può essere anteriore alla data odierna';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.DataConsegna < CURDATE() THEN
|
||||||
|
SIGNAL SQLSTATE '45000'
|
||||||
|
SET MESSAGE_TEXT = 'DataConsegna non può essere anteriore alla data odierna';
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
|
||||||
|
CREATE TRIGGER trg_consegna_no_retroattivita_update
|
||||||
|
BEFORE UPDATE ON consegna
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
IF NEW.DataRitiro <> OLD.DataRitiro AND NEW.DataRitiro < CURDATE() THEN
|
||||||
|
SIGNAL SQLSTATE '45000'
|
||||||
|
SET MESSAGE_TEXT = 'DataRitiro non può essere anteriore alla data odierna';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.DataConsegna <> OLD.DataConsegna AND NEW.DataConsegna < CURDATE() THEN
|
||||||
|
SIGNAL SQLSTATE '45000'
|
||||||
|
SET MESSAGE_TEXT = 'DataConsegna non può essere anteriore alla data odierna';
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
|
||||||
|
DELIMITER ;
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,13 @@ INSERT INTO cliente (Nome, Cognome, Comune, Provincia, Telefono, Email, Note) VA
|
||||||
-- Consegne
|
-- Consegne
|
||||||
-- ClienteID: 1=Mario, 2=Laura, 3=Marco, 4=Giulia, 5=Paolo
|
-- ClienteID: 1=Mario, 2=Laura, 3=Marco, 4=Giulia, 5=Paolo
|
||||||
-- ------------------------------------------------------------
|
-- ------------------------------------------------------------
|
||||||
|
-- Date dinamiche: compatibili con i trigger di retroattività (>= CURDATE())
|
||||||
|
-- DataRitiro e DataConsegna sono indipendenti (es. riga 4: consegna prima del ritiro)
|
||||||
INSERT INTO consegna (ClienteID, DataRitiro, DataConsegna, Stato, ChiaveConsegna) VALUES
|
INSERT INTO consegna (ClienteID, DataRitiro, DataConsegna, Stato, ChiaveConsegna) VALUES
|
||||||
(1, '2026-06-18', '2026-06-20', 'in deposito', 'CNSG9001'),
|
(1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in deposito', 'CNSG9001'),
|
||||||
(2, '2026-06-19', '2026-06-20', 'in consegna', 'CNSG3344'),
|
(2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in consegna', 'CNSG3344'),
|
||||||
(3, '2026-06-20', '2026-06-21', 'da ritirare', 'CNSG2406'),
|
(3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'da ritirare', 'CNSG2406'),
|
||||||
(4, '2026-06-17', '2026-06-21', 'in giacenza', 'CNSG7788'),
|
(4, DATE_ADD(CURDATE(), INTERVAL 5 DAY), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in giacenza', 'CNSG7788'),
|
||||||
(5, '2026-06-21', '2026-06-22', 'in deposito', 'CNSG5522'),
|
(5, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in deposito', 'CNSG5522'),
|
||||||
(1, '2026-06-22', '2026-06-23', 'da ritirare', 'CNSG9876'),
|
(1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), DATE_ADD(CURDATE(), INTERVAL 3 DAY), 'da ritirare', 'CNSG9876'),
|
||||||
(2, '2026-06-22', '2026-06-24', 'in consegna', 'CNSG1122');
|
(2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in consegna', 'CNSG1122');
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue