Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 13-10-2008, 17.19.13   #16
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
okappa, potresti quindi scrivermi il codice così come lo useresti tu? così lo testo e ti dico se va
Poseidon non è collegato   Rispondi citando
Vecchio 13-10-2008, 17.21.10   #17
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
Il codice di cosa ?
micmen non è collegato   Rispondi citando
Vecchio 14-10-2008, 09.30.40   #18
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
di tutto il trigger, la tua versione insomma, come lo faresti tu
Poseidon non è collegato   Rispondi citando
Vecchio 14-10-2008, 09.51.44   #19
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
Come ti ho detto toglierei solo la condizione sul tipo nella clausola "on update" del secondo trigger.
micmen non è collegato   Rispondi citando
Vecchio 15-10-2008, 09.44.15   #20
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
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
Poseidon non è collegato   Rispondi citando
Vecchio 15-10-2008, 10.03.34   #21
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
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...) ?
micmen non è collegato   Rispondi citando
Vecchio 15-10-2008, 10.24.34   #22
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
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
Poseidon non è collegato   Rispondi citando
Vecchio 15-10-2008, 10.37.51   #23
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
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.
micmen non è collegato   Rispondi citando
Vecchio 15-10-2008, 10.56.58   #24
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
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
Poseidon non è collegato   Rispondi citando
Vecchio 17-10-2008, 16.03.31   #25
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
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.
Poseidon non è collegato   Rispondi citando
Vecchio 17-10-2008, 17.03.11   #26
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
Nel senso che non ti crea il controllo o che hai provato e non te lo considera ?
micmen non è collegato   Rispondi citando
Vecchio 17-10-2008, 19.06.16   #27
Poseidon
Gold Member
 
Registrato: 21-09-2002
Messaggi: 2.281
Poseidon promette bene
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..
Poseidon non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

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

Orario GMT +2. Ora sono le: 15.31.43.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.