Colonna calcolata

martedì 02 marzo 2010 - 12.07

ciccioherz Profilo | Junior Member

in un thread precedente (http://www.dotnethell.it/forum/messages.aspx?ThreadID=34541) mi è stato consigliato di usare una colonna calcolata per raggiungere il mio scopo, ovvero l'aggiornamento di un campo di tipo bit automatico in base al confronto tra data attuale e data scadenza.

ringraziando comunque per il suggerimento, confermo che non si addice al mio scopo e spiego perchè.

ho fatto la seguente prova: ho creato la tabella come postata nell'altro thread e ho impostato una data antecedente quella odierna, il bit era quindi true.

poi ho modificato l'orologio di sistema del pc, facendo credere al server sql che è trascorso un giorno.

ho eseguito una query (una select * from) e il bit aveva lo stesso valore..per cui l'unica soluzione che ho è quella di creare una stored procedure che si occupi di aggiornare tutti i campi manualmente..

grazie lo stesso :)

lbenaglia Profilo | Guru

>ho eseguito una query (una select * from) e il bit aveva lo stesso
>valore..per cui l'unica soluzione che ho è quella di creare una
>stored procedure che si occupi di aggiornare tutti i campi manualmente..
Sei libero di non crederci, ma funziona come descritto.

>grazie lo stesso :)
Prego.

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

ciccioherz Profilo | Junior Member

Ah ma io sarei felicissimo di capire che sia davvero così..ma come ho spiegato, facendo quella semplice prova il valore non mi è stato modificato in seguito alla select..
forse funziona solo con gli insert e update?
o forse il mio test non è stato affidabile?

lbenaglia Profilo | Guru

>Ah ma io sarei felicissimo di capire che sia davvero così..ma
>come ho spiegato, facendo quella semplice prova il valore non
>mi è stato modificato in seguito alla select..
Non so cosa dirti.
Questo è quanto riportato anche sui BOL: "Unless otherwise specified, computed columns are virtual columns that are not physically stored in the table. Their values are recalculated every time they are referenced in a query. The Database Engine uses the PERSISTED keyword in the CREATE TABLE and ALTER TABLE statements to physically store computed columns in the table. Their values are updated when any columns that are part of their calculation change".

>forse funziona solo con gli insert e update?
Ripeto, dato che la colonna calcolata non è PERSISTED verrà valutato il valore solo ed esclusivamente ad ogni SELECT.

>o forse il mio test non è stato affidabile?
Non saprei.

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

ciccioherz Profilo | Junior Member

ok, proverò con test incrociati e posterò l'esito. grazie

ciccioherz Profilo | Junior Member

Ok..ho sbagliato io qualcosa nel test di giorni fa. funziona tutto regolarmente, anche con le sole select. grazie 1000
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5