Problema Trigger

giovedì 26 marzo 2009 - 20.05

Gimmy88 Profilo | Newbie

Ciao a tutti!
Il mio problema é: esistono delle variabili array nei trigger?
Mi spiego, nel trigger ho il risultato di una select che puo avere da 0 a n ennuple(formate da un solo attributo) e ogni riga risultante dovrei confrontarla con un parametro, una alla volta. Come faccio quindi a estrarre dal risultato della select uno ad uno le varie righe per poterle confrontare?
L'ideale sarebbe un array... ma non so come fare!

Grazie anticipatamente!

lbenaglia Profilo | Guru

>Il mio problema é: esistono delle variabili array nei trigger?

Ciao Andrea,

Con quale DBMS?
SQL Server ad esempio non ha gli array nel senso stretto del termine, ma dalla versione 2008 puoi definire delle variabili di tipo TABLE.

>Mi spiego, nel trigger ho il risultato di una select che puo
>avere da 0 a n ennuple(formate da un solo attributo) e ogni riga
>risultante dovrei confrontarla con un parametro, una alla volta.
>Come faccio quindi a estrarre dal risultato della select uno
>ad uno le varie righe per poterle confrontare?
Se ci spieghi cosa intendi con "confrontare" vedremo di individuare una soluzione set-based estremamente più efficiente di una row-by-row.
Posta un esempio completo con la struttura della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO), la "logica di business" del trigger ed il result set finale che vuoi ottenere con quei dati.

>L'ideale sarebbe un array... ma non so come fare!
Non credo proprio

>Grazie anticipatamente!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Gimmy88 Profilo | Newbie

ho risolto nel modo seguente:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

mysql non mi dà errori pero questo trigger non va. Ho una tabella giocaotore(username,password,email,data_reg,turno) e tramite php al premere di un bottone(termina turno) faccio un update che mi setta turno=0 del giocatore corrente(rilevato tramite $_SESSION[user]). Quindi dovrebbe scattare il trigger che vedendo un update su giocatore nel campo turno che da '1' diventa '0' dovrebbe selezionare dalla tabella il successivo giocatore(quello che si è registrato dopo di lui) e settare la rispettiva variabile turno='1'.
Il risultato pero è che da php setta turno=0 correttamente, ma il trigger mi mette a 1 lo stesso user corrente e non quello successivo.
Sapete aiutarmi?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5