pondělí 25. listopadu 2013

Jak na Boolovský vypočítaný sloupec v SQL databázi?

Přidání podmínky [VALIDACNI_CHYBA]=0 do řádku Formula v designeru tabulky nestačí.
Je totiž potřeba provést konverzi z hodnoty, kterou vrátí CASE na datový typ BIT

např.

ALTER TABLE dbo.MyTable ADD VALIDNI AS CONVERT([bit],case when [VALIDACNI_CHYBA]=(0) then (1) else (0) end, 0);

konverze je hezká věc, ale stejně po ní zbyde v databázi Allow Nulls pžíznak
Snažil jsem se to vyřešit příkazem CAST ... AS BIT to ale stejně nepomohlo.

cast (CONVERT([bit],case when [VALIDACNI_CHYBA]=(0) then (1) else (0) end, 0) as bit)

Nezbylo mi nic jiného než toto ošetřit v aplikaci if (VALIDNI.Value) {...}

Zdroje:
http://stackoverflow.com/questions/2050007/marking-persisted-computed-columns-not-null-in-sql-server-management-studio