Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Udate di un campo in funzione di un altro
lunedì 25 aprile 2005 - 15.32
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
s_dimaio
Profilo
| Junior Member
57
messaggi | Data Invio:
lun 25 apr 2005 - 15:32
Situazione di partenza:
Tabella1
a b
-------
0 0
Se faccio un semplice UPDATE del tipo:
UPDATE Tabella1 SET a = 5, b = a + 1
in MySql ottengo un risultato del tipo:
a b
---------
5 6
mentre con Sql Server ottengo:
a b
---------
5 1
Come faccio a dire a Sql Server di ragionare sul valore di "a" dopo l'aggiornamento?
Ciao e grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 25 apr 2005 - 20:18
> Come faccio a dire a Sql Server di ragionare sul valore di "a" dopo l'aggiornamento?
Ciao s_dimaio,
il comportamento che riscontri in SQL Server è coerente, in quanto entrambe le colonne a e b vengono aggiornate nella medesima transazione, pertanto quando valorizzi "b", "a" sarà ancora a 0.
Per ovviare al problema, potresti utilizzare una varibile di appoggio ed una sintassi del comando UPDATE piuttosto sconosciuta:
USE tempdb
GO
/* Definisco la tabella dbo.myTable */
CREATE TABLE dbo.myTable(
a tinyint NOT NULL,
b tinyint NOT NULL
)
GO
/* Inserisco la prima riga */
INSERT dbo.myTable VALUES(0, 0)
GO
DECLARE @Value tinyint
UPDATE dbo.myTable
SET @Value = a = 5
, b = @Value + 1
GO
/* Vediamo */
SELECT *
FROM dbo.myTable
GO
/* Output:
a b
---- ----
5 6
(1 row(s) affected)
*/
/* Pulizia */
DROP TABLE dbo.myTable
Per approfondire la sintassi del comando UPDATE, leggi il seguente paragrafo sui Books Online:
http://msdn.microsoft.com/library/en-us/tsqlref/ts_ua-uz_82n9.asp
> Ciao e grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !