PDA

View Full Version : [database] Eliminare


chiara3.0
18-09-2007, 14:55
Ciao a tutti:rolleyes:

in un database ho una tabella 'prenotazioni' .
Nella tabella ho un un campo con la data della prenotazione.
Dovrei eliminare questo campo 24 ore dopo la sua immissione.

Cosa dovrei fare? Dovrei fare una query 'continua' pr controllare il valore del campo??? :confused:

Non so da dove partire.... :(

chiara

isAlreadyInUse
18-09-2007, 15:02
Nel sesno che lo devi resettare?
Secondo me è meglio se te la gestisci da codice la cosa, lasciando invariato il valore

Mixmar
18-09-2007, 15:05
Ciao a tutti:rolleyes:

in un database ho una tabella 'prenotazioni' .
Nella tabella ho un un campo con la data della prenotazione.
Dovrei eliminare questo campo 24 ore dopo la sua immissione.

Cosa dovrei fare? Dovrei fare una query 'continua' pr controllare il valore del campo??? :confused:

Non so da dove partire.... :(

chiara

Ti consiglierei di utilizzare i trigger del database per programmare l'esecuzione ad una determinata scadenza: però, come e se concretamente si possa fare, dipende dal tipo preciso di DB che vuoi utilizzare. Personalmente non li ho mai usati, ma dovrebbero comunque fare a caso tuo.

chiara3.0
21-09-2007, 14:00
Nel sesno che lo devi resettare?
No, nel senso che l'intera riga deve essere eliminata.


però, come e se concretamente si possa fare, dipende dal tipo preciso di DB che vuoi utilizzare

E' stato usato MySQL 5


Ti consiglierei di utilizzare i trigger del database per programmare l'esecuzione ad una determinata scadenza


Sono andata a vedere il funzionamento dei trigger e se non ho capito male questi hanno bisogno di un evento scatenante(una qualunque operazione sul database) per esser eseguiti.
Se non faccio alcuna operazione sul database quindi non avrei un evento scatenante e i trigger non potrebbero eseguiti. E' così o non ho capito nulla io :stordita: ?

isAlreadyInUse
21-09-2007, 14:20
Riguardo ai trigger è come hai detto tu..
Potresti avere un demone che si fa il giro è ogni tot cancella i record che non tiservono, oppure lasciarli stare li e semplicemente non considerarli nelle tue operazioni, magari facendoti una vista che prenda in considerazione solo quelli piu recenti di 24 ore fa.

trallallero
21-09-2007, 14:22
time function

chiara3.0
21-09-2007, 14:33
time function

potresti spiegarti meglio?



Potresti avere un demone che si fa il giro è ogni tot cancella i record che non tiservono

Come creo un demone?

isAlreadyInUse
21-09-2007, 14:37
Un demone, cioè un programma in background che si fa il lavoro di eliminare i record che nn ti servono

trallallero
21-09-2007, 14:38
potresti spiegarti meglio?
che DB usi ? non riesco a trovare i miei scripts ma anni fa feci delle time functions con Oracle. Son delle funzioni periodiche. Cerco meglio

chiara3.0
21-09-2007, 14:43
che DB usi ?

MySql 5.0.

Un demone, cioè un programma in background che si fa il lavoro di eliminare i record che nn ti servono

In quale linguaggio deve essere scritto ?

isAlreadyInUse
21-09-2007, 14:46
Tu in che linguaggio stai programmando?

chiara3.0
21-09-2007, 14:47
php, java

isAlreadyInUse
21-09-2007, 14:48
fallo in java

trallallero
21-09-2007, 14:58
MySql 5.0.

20.1. Event Scheduler Overview
MySQL Events are tasks that run according to a schedule. Therefore, we sometimes refer to them as scheduled events. When you create
an event, you are creating a named database object containing one or more SQL statements to be executed at one or more regular inter-
vals, beginning and ending at a specific date and time. Conceptually, this is similar to the idea of the Unix crontab (also known as a
“cron job”) or the Windows Task Scheduler.
Scheduled tasks of this type are also sometimes known as “temporal triggers”, implying that these are objects that are triggered by the
passage of time. While this is essentially correct, we prefer to use the term events in order to avoid confusion with triggers of the type
discussed in Chapter 19, Triggers. Events should more specifically not be confused with “temporary triggers”. Whereas a trigger is a
database object whose statements are executed in response to a specific type of event that occurs on a given table, a (scheduled) event is
an object whose statements are executed in response to the passage of a specified time interval.
While there is no provision in the SQL Standard for event scheduling, there are precedents in other database systems, and you may no-
tice some similarities between these implementations and that found in the MySQL Server.

se vai su mysql.com ti puoi scaricare manuali vari. Ti consiglio di usare piu´ cose interne (di mysql) possibile senza demoni esterni per evitare connessioni e processi inutili ;)

isAlreadyInUse
21-09-2007, 15:04
Effettivamente dalla nuova (5.1.12) versione hanno aggiunto questa funzionalità..divertiti!!

http://dev.mysql.com/doc/refman/5.1/en/create-event.html (http://dev.mysql.com/doc/refman/5.1/en/create-event.html)

chiara3.0
21-09-2007, 15:14
http://dev.mysql.com/doc/refman/5.1/en/create-event.html


Andrò a divertirmi.. :sofico:

Grazie a tutti :)

chiara3.0
21-09-2007, 20:55
Ciao

Ho risolto così:


CREATE EVENT mioevento ON SCHEDULE EVERY 1 MINUTE DO DELETE FROM prenotazioni WHERE prenotazioni.Data_Scadenza < Now();



Effettivamente funziona... :ciapet: ma..mi chiedevo ù

1- se la query sulla data fosse corretta fatta così;

2- Questa funzionalità (create event) è disponibile dalla versione 5.1 di mysql... che è ancora una beta... c'è da fidarsi???


Grazie
Ciao