Per accedere a questa pagina è necessario essere loggati

stored procedures e trigger | SQL & MySQL

Topic: Pubblico - Composto da 4 Posts di 3 Utenti.

29 Giugno, 2010 08:24 #1
simon83
Utente

simon83
Registrato: Jun, 2010
Posts: 2
Offline

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
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

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
kismet
Utente

kismet
Registrato: Jun, 2010
Posts: 12
Offline

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
simon83
Utente

simon83
Registrato: Jun, 2010
Posts: 2
Offline

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