Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    Ho creato il trigger ma ogni volta che provo di inserire la data annoinizio da phpmyadmin lasciando vuota la data annofine ,ho l'errore

    codice:
    #1442 - Can't update table 'MiaTabella' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    c'era da lavorarci un pochettino, questa è quella corretta:


    codice:
    DROP TRIGGER IF EXISTS updateDataFine;
    
    DELIMITER $$
    
    
    CREATE TRIGGER updateDataFine BEFORE INSERT ON MiaTabella
    
    FOR EACH ROW BEGIN
    DECLARE newDataFine DATETIME;
    
    SET newDataFine = NEW.annoinizio + INTERVAL 3 YEAR;
    SET NEW.annofine = newDataFine; 
    END$$
    Non si puo lanciare una query update sulla stessa tabella in un trigger, devi calcolarti i valori prima che venga eseguita la insert con il BEFORE INSERT


  3. #13
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    Funziona perfettamente!!solo che ogni colta che faccio un insert da phpmyadmin alla fine del operazione esce il mesg :
    codice:
    1 row inserted. Inserted row id: 12 Warning: #1265 Data truncated for column 'annofine' at row 1

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    annofine è dichiarato come tipo datetime? Dall'errore ti tronca il dato perchè troppo "lungo", dovresti guardare i tipi che ti restituisce. Se usi annofine e annoinizio come due datetime deve andare senza warning di truncated data. ?

  5. #15
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    sia annoinizio e annofine sono di tipo DATE.

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    prova a cambiare con questa riga:

    codice:
    SET newDataFine = DATE_FORMAT(NEW.annoinizio + INTERVAL 3 YEAR, '%Y%m%d');

  7. #17
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    Non ha cambiato qualcosa,inserisce i dati corretti ma fa vedere sempre lo stesso msg d'errore!La mia avventura con mysql è comminciata da poco,devo ancora imparare molto.Se hai qualche altra idea fammi sapere,io continua a smanettare e a leggere tutorial su internet.Grazie mille!

  8. #18
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    ragazzi devo fare se è possibile una piccola modifica a questo trigger...invece di fare +3 anni voglio che il valore lo legge da una cella intermentia cioe annoinizio,durata,annofine cioe sommare al anno di inizio la durata che sara un numero intero tra 1,2,3...è possibile?

  9. #19
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    16
    Nessuno conosce come faccio a cambiare la seconda parte del trigger??

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    usi lo stesso principio di newDataFine

    codice:
    DROP TRIGGER IF EXISTS updateDataFine;
    
    DELIMITER $$
    
    
    CREATE TRIGGER updateDataFine BEFORE INSERT ON MiaTabella
    
    FOR EACH ROW BEGIN
    DECLARE newDataFine DATETIME;
    DECLARE newDurata int;
    
    SET newdurata = NEW.durata;
    SET newDataFine = NEW.annoinizio + INTERVAL newDurata YEAR;
    SET NEW.annofine = newDataFine; 
    END$$

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