Topic: Pubblico - Composto da 4 Posts di 3 Utenti.
| 29 Giugno, 2010 08:24 | #1 | ||
|---|---|---|---|
|
Salve, sto realizzando una base di dati, ma ho problemi con la realizzazione di stored procedure e trigger. Nella base di dati ho queste due tabelle: cliente, abbonamento e tipo di abbonamento. Vi scrivo il codice per la creazione delle tabelle. CREATE TABLE Cliente( `nome` varchar(30) default NULL, `cognome` varchar(30) default NULL, `codfisc` varchar(16) NOT NULL, `dataNascita` date NOT NULL, `residenza` varchar(20) NOT NULL, `telefono` varchar(11) NOT NULL, PRIMARY KEY (`codfisc`) ); CREATE TABLE Tipologiaabbonamento( `nome` varchar(30) NOT NULL, `prezzo` int(11) default NULL, PRIMARY KEY (`nome`) ); CREATE TABLE Abbonamento( cliente varchar(16), tipo varchar(30), dataini date NOT NULL, datafin date NOT NULL, FOREIGN KEY references Cliente(codfisc) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY references Tipologiaabbonamento(nome) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE ); Devo fare alcuni controlli sulle date, ma non sono capace di scrivere il codice sql. Mi hanno detto di creare delle stored procedures per effettuare i controlli e dopo richiamarle tramite i trigger. in particolare devo: che la data di inizio di un abbonamento sia precedente a quella di fine. controllare che un cliente non possa stipulare un abbonamento nel periodo in cui è valido un abbonamento stipulato in precedenza.[/COLOR] Qualcuno può gentilmente aiutarmi? Grazie
Ultima modifica 11 Luglio, 2010 01:16 di simon83 |
|||
| 29 Giugno, 2010 19:43 | #2 | ||
|---|---|---|---|
|
Ciao simon83 Benvenuto su MySQL Italia Allora per prima cosa scusami del ritardo con cui rispondo alla tua mail. Seconda cosa, stai tranquillo che anche se con l’SQL sei alle prime armi, su questo forum cercheremo insieme di risolvere il problema. Andando al sodo, la mia esperienza mi suggerirebbe di spostare questi controlli a livello di applicazione, non è il DB che si deve occupare di certe cose, tuttavia se non puoi, prima di cimentarci con la scrittura del trigger è essenziale che tu chiarisca questi punti: Nel momento in cui un cliente sta stipulando un abbonamento, se si verifica la condizione per cui le date sono sbagliate, e quindi l’abbonamento non va stipulato, cosa succede ai dati ? Mi spiego meglio, devi chiarire un pò meglio la logica del problema altrimenti rischiamo solo di farti confondere senza offrirti un reale aiuto. Fammi sapere saluti algweb Un tempo ero algweb ora sono g2d |
|||
| 30 Giugno, 2010 00:33 | #3 | ||
|---|---|---|---|
|
Ciao simon83 mi intrometto nella discussione e vediamo se posso aiutarti pure io. Un piccolo appunto iniziale sulle tabelle, sul campo ‘prezzo’ di ‘tipologiabbonamento’ metterei un bel float o double (stiamo ormai cogli euri e i dollari :)). Poi come giustamente ha detto algweb il controllo lo dovresti fare al momento della conferma del modulo di iscrizione quindi via codice, e per arginare il problema in partenza potresti mostrare un campo per inserire la data di inizio abbonamento e una select in cui sceglie 1 gg .. 1 mm .. 1 anno ecc. Comunque come ha detto algweb prova ad metterla giù meglio. ciao |
|||
| 30 Giugno, 2010 07:08 | #4 | ||
|---|---|---|---|
|
Buongiorno, mi è stato richiesto di effettuare quaeti controlli a livello di db. Di solito si creano delle stored procedures che saranno richiamate da trigger prima dell’inserimento dei dati. Se i dati non sono corretti non bisogna salvarli sul db |
|||
Condividi su:
Loggati o Registrati per replicare