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
|
||||
-- Allineato alle API: /utenti, /clienti, /cd campi, /prenotazioni
|
||||
-- Allineato alle API: /utenti, /clienti, /consegne
|
||||
-- ============================================================
|
||||
|
||||
USE corrieri;
|
||||
|
|
@ -49,6 +49,8 @@ CREATE TABLE IF NOT EXISTS cliente (
|
|||
|
||||
-- ----------------------------------------------------------------
|
||||
-- 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 (
|
||||
ConsegnaID INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
|
|
@ -60,7 +62,7 @@ CREATE TABLE IF NOT EXISTS consegna (
|
|||
|
||||
PRIMARY KEY (ConsegnaID),
|
||||
UNIQUE KEY uk_chiaveConsegna (ChiaveConsegna),
|
||||
KEY idx_DataConsegna ( DataConsegna),
|
||||
KEY idx_DataConsegna (DataConsegna),
|
||||
|
||||
CONSTRAINT fk_consegna_cliente
|
||||
FOREIGN KEY (ClienteID)
|
||||
|
|
@ -71,3 +73,45 @@ CREATE TABLE IF NOT EXISTS consegna (
|
|||
) ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
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
|
||||
-- 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
|
||||
(1, '2026-06-18', '2026-06-20', 'in deposito', 'CNSG9001'),
|
||||
(2, '2026-06-19', '2026-06-20', 'in consegna', 'CNSG3344'),
|
||||
(3, '2026-06-20', '2026-06-21', 'da ritirare', 'CNSG2406'),
|
||||
(4, '2026-06-17', '2026-06-21', 'in giacenza', 'CNSG7788'),
|
||||
(5, '2026-06-21', '2026-06-22', 'in deposito', 'CNSG5522'),
|
||||
(1, '2026-06-22', '2026-06-23', 'da ritirare', 'CNSG9876'),
|
||||
(2, '2026-06-22', '2026-06-24', 'in consegna', 'CNSG1122');
|
||||
(1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in deposito', 'CNSG9001'),
|
||||
(2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in consegna', 'CNSG3344'),
|
||||
(3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'da ritirare', 'CNSG2406'),
|
||||
(4, DATE_ADD(CURDATE(), INTERVAL 5 DAY), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in giacenza', 'CNSG7788'),
|
||||
(5, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'in deposito', 'CNSG5522'),
|
||||
(1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), DATE_ADD(CURDATE(), INTERVAL 3 DAY), 'da ritirare', 'CNSG9876'),
|
||||
(2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 2 DAY), 'in consegna', 'CNSG1122');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue