>oggi inserisco i dati e attivo risulta true perche supponiamo
>che la scadenza sia domani.
>
>domani però, il campo attivo sarà sempre true..mentre io vorrei
>si impostasse su false..quale "evento" del db potrei scegliere
>secondo te..?
Nell'esempio riportato ho utilizzato per errore la colonna dataIscrizione, ovviamente intendevo dataScadenza.
Ora, se la scadenza è domani, attivo varrà 1.
Domani varrà 0 in quanto il valore è sempre calcolato "al volo" ad ogni query:
USE tempdb;
CREATE TABLE dbo.foo(
dataIscrizione date NOT NULL,
dataScadenza date NOT NULL,
attivo AS (
CASE
WHEN dataScadenza <= CURRENT_TIMESTAMP THEN 0
ELSE 1
END
)
);
INSERT dbo.foo VALUES('20100101', '20100201');
INSERT dbo.foo VALUES('20100225', '20100228');
INSERT dbo.foo VALUES('20100301', '20100301');
INSERT dbo.foo VALUES('20100301', '20100302');
SELECT *
FROM dbo.foo;
/* Output:
dataIscrizione dataScadenza attivo
-------------- ------------ -----------
2010-01-01 2010-02-01 0
2010-02-25 2010-02-28 0
2010-03-01 2010-03-01 0
2010-03-01 2010-03-02 1
(4 row(s) affected)
*/
DROP TABLE dbo.foo;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org