Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [mysql] Eliminare

  1. #1

    [mysql] Eliminare

    Ciao a tutti

    in un database creato con MySQL 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??? Usare trigger??

    Non so da dove partire....

  2. #2
    Ciao,
    io lavoro in ambiente bancario:
    qui si usa fare girare dei batch, ovvero dei programmi schedulati a certe ore del giorno e della notte.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Originariamente inviato da mirkoagrati
    Ciao,
    io lavoro in ambiente bancario:
    qui si usa fare girare dei batch, ovvero dei programmi schedulati a certe ore del giorno e della notte.
    Anch'io inizialmente ho pensato ad un file batch, in cui far eseguire una pagina .php in cui appunto elimina le righe della tabella che ti interessano.

    Il problema si pone per il fatto che tu hai detto:

    <<Dovrei eliminare questo campo 24 ore dopo la sua immissione>>

    Quindi dovresti eseguire tale operazione di cancellazione non ad una certa ora del giorno o della notte, ma subito dopo che quel record "scade", cioé appena sono passate 24 ore dalla sua immissione.

    Le operazioni pianificate di windows ti permettono di ripetere una certa operazione almeno ogni minuto. Quindi il tuo script .php lo puoi eseguire 1 volta ogni minuto. Un lasso di tempo minore, purtroppo, non te lo permette. Quindi se per te va bene puoi usare questa soluzione, altrimenti devi crearti un demone che giri in continuazione e ke ogni tot secondi ti faccia un controllo. Potresti anke usare java.

  4. #4
    penso sia sufficiente mettere una condizione nel where che scarti i record con timestamp superiore alle 24 ore e quando si ritiene opportuno (per esempio in occasione di un insert) lanciare una query delete per i record scaduti....

    Tanto se nessuno interroga il db frega una mazza dei record scaduti, se qualcuno interroga il where puo' impedire la raccolta di record scaduti.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ciao

    premetto che di queste cose so poco e niente ..quindi chiedo :P

    1- Un file batch gira lato server?

    Quindi dovresti eseguire tale operazione di cancellazione non ad una certa ora del giorno o della notte, ma subito dopo che quel record "scade", cioé appena sono passate 24 ore dalla sua immissione.
    Esatto. Anche se un ritardo di qualche minuto non è importante

    2- Non potrei richiamare il file batch continuamente?


    Le operazioni pianificate di windows ti permettono di ripetere una certa operazione almeno ogni minuto.
    3- Le operazioni pianificate di Windows non dipendono dalla configurazione del pc ?
    Avrei bisogno di una soluzione indipendente da questo.


    4- Come lo creo un demone (linguaggio, cosa dovrebbe fare, dove lo dovrei mettere)?


    Grazie mille ))

    Chiara

  6. #6
    quando si ritiene opportuno (per esempio in occasione di un insert) lanciare una query delete per i record scaduti....
    Quindi utilizzare un trigger?

  7. #7
    La soluzione + elegante sarebbe seguire il suggerimento di Piero, cioé:

    - utilizzare trigger che faccia qualcosa prima di eseguire un INSERT o di un UPDATE (anche perché da quello che ho capito non esegui query di cancellazione sulle prenotazioni, ma vuoi che queste si cancellino in automatico)

    - devi comporre, sempre come ti ha suggerito, Piero in maniera attenza una SELECT sulla tabella prenotazioni quando devi andare a prelevare dei dati, perché devi escludere con un'opportuna condizione nel WHERE tutti quei record scaduti.

  8. #8
    Per i trigger basta andare sul sito di mysql e vedere la documentazione.

    Poi,

    1) si il file batch gira su un server;

    2) non puoi richiamare il file batch continuamente perché le operazioni pianificate di windows non dipendono dalle impostazioni del PC, quando ne crei una ad un certo punto puoi spuntare una voce che dice:

    Ripeti l'operazione

    e si attiva una parte della finestra che dice ogni ........... ed una finestrella dove il tempo min è 1 min.

  9. #9
    Sul sito di mysql mentre cercavo documentazione sui trigger ho trovato questo


    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.
    Potrebbe fare al caso mio?

  10. #10
    Potrebbe andare, però il problema è ke funziona solo per la versione 5.1 che è una versione Beta per cui è instabile ed è meglio non usarla.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.