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

    [mySql] Problema trigger

    Salve ragazzi, ho un problema con un database mySql.
    Mi serve un trigger che quando attivato prenda un valore da una tabella e lo inserisca all'interno di un'altra tabella. Vi espongo il problema in dettaglio. Ho 3 tabelle, Alpha, beta e gamma. La tabella alpha ha 2 campi, contatore e nome. Quando inserisco un record nella tabella beta si attiva il trigger che prende il valore nome del record con il contatore più basso in alpha e lo inserisce in un nuovo record della tabella gamma.

    Il problema mi sorge quando devo prendere quel valore (nome) e metterlo in gamma. Non capisco come possa io 'salvare" solamente il valore per metterlo poi in una insert into gamma values (nome).

    Mi potete aiutare?

    Ciap

  2. #2
    se ho capito bene piu' che un trigger ti serve una variabile.

    codice:
    insert into beta (campo1, campo2, campo3)
                    values ('val1', 'val2', 'val3');
    
    set @num = (select nome from alpha having min(contatore) );
    
    insert into gamma (campo1, campo2, nome)
                    values ('val1', 'val2', @num);
    tre queries... oppure solo due se hai le subqueries...

    codice:
    insert into beta (campo1, campo2, campo3)
                    values ('val1', 'val2', 'val3');
    
    insert into gamma (campo1, campo2, nome)
                    values ('val1', 'val2', (select nome from alpha having min(contatore) );

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    Ciao,
    anche io avrei un problemino simile a quello indicato nel primo post ma non sono riuscito a risolverlo.

    In particolare ho tre tabelle e vorrei fare in modo che ogni volta che viene inserito un nuovo record nella tabella1 in base al valore contenuto nel campo "codice" mi vengano selezionati tutti i record della tabella2 con lo stesso valore di "codice" e tutti questi inseriti in una terza tabella.

    Ho provato a creare qualche trigger anche con le varibili ma nulla da fare. Il mio problema principale è che non riesco ad estrarre il valore del campo "codice" appena inserito nella tabella1 poi con le subquery potrei cavarmela per recuperare e inserire gli altri valori.

    Uso mysql 5.0.21.

    Ciao e grazie
    Luigi

  4. #4
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Originariamente inviato da aliblui
    Ciao,
    anche io avrei un problemino simile a quello indicato nel primo post ma non sono riuscito a risolverlo.

    In particolare ho tre tabelle e vorrei fare in modo che ogni volta che viene inserito un nuovo record nella tabella1 in base al valore contenuto nel campo "codice" mi vengano selezionati tutti i record della tabella2 con lo stesso valore di "codice" e tutti questi inseriti in una terza tabella.

    Ho provato a creare qualche trigger anche con le varibili ma nulla da fare. Il mio problema principale è che non riesco ad estrarre il valore del campo "codice" appena inserito nella tabella1 poi con le subquery potrei cavarmela per recuperare e inserire gli altri valori.

    Uso mysql 5.0.21.

    Ciao e grazie
    il valore che cerchi dovrebbe essere dentro NEW.codice, puoi usare un trigger after insert

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    Ciao,
    grazie per la risposta utilissima che in parte mi ha fatto risolvere il problema.
    Dico in parte perchè ora ho un altro problemino che è il seguente.

    In base al codice inserito nella tabella1 nella tabella2 possono esserci uno o più record da selezionare e inserire nella tabella3. La domanda quindi è: come posso fare un inserimento multiplo nella tabella3 utilizzando sempre lo stesso trigger? E' possibile annidare i trigger?

    Al momento il codice sql che utilizzo è questo
    codice:
    begin
          SET @analisi = New.RifIdAnalisi;
          SET @id = New.IdErogazione;
    	insert into valorierogazioni (RifIdErogazione, NomeParametro)
              values (@id, (Select NomeParametro from parametri where RifIdAnalisi = @analisi));
        end
    e mi dà errore la subquery che può restituire al massimo un record.

    Ciao e grazie!
    Luigi

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.