Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [MySQL] Bloccare una query

    Salve a tutti, ho da poco iniziato ad utilizzare MySQL e spero che possiate aiutarmi a risolvere questo problema: sto realizzando un DB che scimmiotta quello di youtube ed ho una tabella Video nella quale vengono riportati i dati dei video caricati dai vari utenti. Ciò che voglio realizzare è un controllo sul numero di video inseriti da ogni utente prima di effettuare una nuova query... in pratica se un utente ha già inserito 99 video nell'ultimo anno, la query per l'inserimento del centesimo dovrà essere bloccata.
    Ho pensato di usare un TRIGGER da eseguire BEFORE INSERT, ma non riesco a venirne a capo.
    Questo è il codice che ho iniziato a buttare giù

    codice:
    CREATE TRIGGER superamento_limite_video 
    BEFORE INSERT ON Video
    FOR EACH ROW
    BEGIN
    
       IF( (SELECT COUNT(*) FROM Video WHERE `data upload` > DATE_SUB(current_date, interval 1 year)
            AND utenteRegistrato = NEW.utenteRegistrato) > 99 )
       THEN
            raise_application_error (-20001,'Troppi video inseriti')
       END IF
    END
    però ho un errore su
    codice:
    raise_application_error (-20001,'Troppi video inseriti')
    che non riesco ad eliminare.
    Grazie anticipatamente a tutti per l'aiuto.

  2. #2

    Risolto!

    Ho trovato una soluzione al problema; la posto sperando che possa essere d'aiuto a qualcun altro. In pratica quando è vera la condizione del trigger, basta settare come NULL un campo della query che è richiesto come NOT NULL, in questo modo la query non andrà a buon fine e verrà bloccata. Per sicurezza ho scelto di settare la PRIMARY KEY:

    codice:
    CREATE TRIGGER superamento_limite_video 
    BEFORE INSERT ON Video
    FOR EACH ROW
    BEGIN
    
    IF( (SELECT COUNT(*) FROM Video WHERE `data upload` > DATE_SUB(current_date, interval 1 year)
            AND utenteRegistrato = NEW.utenteRegistrato) > 99)
        THEN 
            SET NEW.idVideo= NULL;
           
    END IF; 
    END;
    Saluti.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.