|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
13-10-2008, 17.19.13 | #16 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
|
13-10-2008, 17.21.10 | #17 |
Junior Member
Registrato: 11-09-2008
Messaggi: 53
|
Il codice di cosa ?
|
14-10-2008, 09.30.40 | #18 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
di tutto il trigger, la tua versione insomma, come lo faresti tu
|
14-10-2008, 09.51.44 | #19 |
Junior Member
Registrato: 11-09-2008
Messaggi: 53
|
Come ti ho detto toglierei solo la condizione sul tipo nella clausola "on update" del secondo trigger.
|
15-10-2008, 09.44.15 | #20 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
ho risolto! ecco il codice finale e funzionante:
create trigger videoteca.decrementa_quantita after insert on noleggio for each row UPDATE dvd SET quantita=quantita-1 where id_dvd = new.dvd_noleggiato; create trigger videoteca.incrementa_quantita after update on noleggio for each row UPDATE dvd SET quantita=quantita+1 where new.tipo = 1 and id_dvd = new.dvd_noleggiato; ora però ho 1 altro problema, devo fare in modo che l'inserimento nella tabella noleggio sia lecito solo quando il cliente che ha restituito il precedente noleggio non è in ritardo create trigger consenti_noleggio before insert on noleggio for each row IF socio=0 and DataRestEff > DataRestPrev or DataRestPrev < now() THEN abort while DataRestEff <= (DataRestEff, interval 30 day); sottolineo che non ho la minima idea se l'ultima riga abbia un senso in SQL. Il succo è che se un non socio mi consegna in ritardo, gli blocco la possibilità di noleggiare per 30 giorni. Ultima modifica di Poseidon : 15-10-2008 alle ore 09.48.17 |
15-10-2008, 10.03.34 | #21 |
Junior Member
Registrato: 11-09-2008
Messaggi: 53
|
Scusa, ma vedo degli attributi non presenti nelle tabelle di cui parlavi all'inizio (socio, DataRestPrev). Anche io penso che l'ultima riga non vada bene. Cosa indicherebbe (DataRestEff, interval...) ?
|
15-10-2008, 10.24.34 | #22 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
ops.. si scusa, allora
- " socio " è un attributo di una tabella chiamata CLIENTE. - "DataRestPrev è un attributo di una tabella chiamata GIORNO ( che indica il giorno di noleggio, con la data iniziale del noleggio e quella di restituzione prevista ) lo scopo del trigger è quello di impedire un nuovo noleggio ( x 30 giorni a partire dalla restituzione ) a un cliente che non sia socio ( socio = 0 ) che abbia riconsegnato il precedente noleggio in ritardo rispetto alla data di restituzione prevista ( che cade una settimana dopo la data di inizio noleggio ) eh, l'ultima riga indicherebbe appunto il fatto che mi blocca l'inserimento in noleggio per 30 giorni a partire dalla data di riconsegna effettiva se questa è in ritardo. So che è sbagliata, ma non riesco a trovar online alcuno spunto per capire come scriverla correttamente. edit: a meno che, pensavo.. non si possa introdurre una clausola check nella definizione della tabella noleggio, xò richeiderebb eun join suppongo o più d'uno, è possibile mettere dei join all'interno di una check nella definizione di una tabella? Ultima modifica di Poseidon : 15-10-2008 alle ore 10.31.50 |
15-10-2008, 10.37.51 | #23 |
Junior Member
Registrato: 11-09-2008
Messaggi: 53
|
Domanda: ma se un cliente non è socio come fai ad identificarlo quando ritenta un noleggio ? Cmq. a pelle mi viene in mente una tabella (magari chiamata BlackList) contenente gli attributi Cliente, DataFineBlocco. Quando viene riconsegnato in ritardo un dvd, automaticamente un trigger inserisce una riga in tale tabella. Quindi, quando un cliente tenta il noleggio, prima si controlla se è presente in BlackList. Poi ci potrebbe essere una procedura giornaliera che giornalmente ripulisce la BlackList.
|
15-10-2008, 10.56.58 | #24 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
allora ogni cliente è identificato da un id_cliente univoco ( chiave primaria ) e c'è 1 attributo "socio" che se impostato a 0 indica che il cliente non è un socio, e se impostato a 1 indica che il cliente è socio.
Comunque cambiando argomento, ma rimanendo in tema è possibile creare un trigger che abbia effetto sulla tabella target dalla quale è invocato? del tipo create trigger after update on TABELLA TARGET for each row update TABELLA TARGET ecc ecc.. ? Ultima modifica di Poseidon : 16-10-2008 alle ore 13.10.10 |
17-10-2008, 16.03.31 | #25 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
inoltre..
Date due tabelle di partenza: 1) NOLEGGIO 2) DVD, che ha diversi attributi tra qui l'attributo quantita ha senso il seguente trigger? create trigger noleggi_consentiti before insert on noleggio check dvd.quantita >0 and dvd.quantita<=5; Il fatto è la quantità di dvd disponibili deve essere compresa tra 0 e 5, ho provato a implementare la tabella dvd inserendovi interno una clausola check, ma MYSQL la ignora. |
17-10-2008, 17.03.11 | #26 |
Junior Member
Registrato: 11-09-2008
Messaggi: 53
|
Nel senso che non ti crea il controllo o che hai provato e non te lo considera ?
|
17-10-2008, 19.06.16 | #27 |
Gold Member
Registrato: 21-09-2002
Messaggi: 2.281
|
nel senso che se implemento una tabella così:
create table noleggio ( ecc ecc quantita tinyint(1) default 5 not null, ecc ecc check(quantita >=0 and quantita<=5) ); MySQL non mi rileva alcune errore, xò la check non viene proprio considerata. Ho controllato online e MySQL proprio non digerisce le check nelle tabelle. Non trovo 1 modo per implementar il controllo avevo pensato mediante trigger, ma non riesco.. |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[MYSQL] perkè questo codice non funziona? | Poseidon | Programmazione | 6 | 03-11-2008 03.44.12 |
[MYSQL] On delete cascade | Alhazred | Programmazione | 2 | 01-10-2008 14.49.20 |
[MySQL] SQLException: Before start of result set | Alhazred | Programmazione | 5 | 20-07-2008 19.57.21 |
[MySQL] query complessa | Thor | Programmazione | 5 | 29-08-2005 05.34.15 |
[mysql] | nana_d | Programmazione | 2 | 20-04-2005 11.38.17 |