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

    [My-SQL] Aiuto con il costrutto NEW. in MySQL?

    Salve a tutti, stavo studiando MySQL per un esame universitario, e vedendo i compiti del professore ho notato che in alcuni degli esercizi più complicati, usa l'istruzione:
    codice:
    DECLARE farmaciStessaPatologia INTEGER DEFAULT 0;
    SELECT COUNT(*) INTO farmaciStessaPatologia      
    FROM Indicazione I      
    WHERE I.Patologia = NEW.Patologia;
    ovviamente questa porzione di codice è solo una piccola parte del trigger vero e prorpio ma basta per farvi capire i miei dubbi. infatti non capisco cosa succede quando viene usato il NEW.Patologia. Cosa Succede? è riconducibile al c++ con il costrutto per allocare in memoria dinamica (se qualcuno si intende di c++)? grazie delle risposte!

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Il c++ non c'entra niente.
    Quel trigger, che suppongo venga scatenato da una insert e/o da un update, va a verificare quanti altri farmaci hanno nella colonna Patologia lo stesso valore di quello appena inserito, o lo stesso valore appena assegnato nel caso di un update.
    Il NEW in sostanza si riferisce alla riga in tabella così com'è stata appena inserita o modificata. Se si trattasse di un update, potresti usare OLD.Patologia per vedere il valore della riga modificata prima dell'update

  3. #3
    ok, immaginavo che il c++ non c'entrasse nulla, quindi praticamente il se scrivo:
    codice:
    new.paziente=old.paziente
    il trigger verifica che nell'ultima tupla modificata (nel caso di update) il vecchio paziente è uguale al nuovo paziente modificato, giusto?

    e se invece lo stesso codice viene applicato ad un trigger di inserimento? in quel caso ha senso scrivere quel codice? cosa vuol dire in questo secondo caso?

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    se scrivi quel codice dipende da cosa ci metti davanti... se è un test sì, fa quella verifica; se è un set imposta il valore nuovo uguale al vecchio, annullando eventuali tentativi di modificarlo (questo è possibile solo in un BEFORE UPDATE).
    Se sei in fase di insert il valore OLD non esiste, non puoi usarlo.

  5. #5
    bene come immaginavo, avevo pensato che non si potesse usare il valore OLD con un trigger di inserimento, in effetti non avrebbe neanche molto senso. ovviamente la stessa cossa anche se mi trovo in un trigger delete?

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    in un trigger delete vale il contrario, hai il valore OLD e non hai il NEW

  7. #7
    ok bene!

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.