webForumDet fria alternativet

Vy med typad null-kolumn med index

Databaser & SQL

1 svar · 359 visningar · startad av bohlin

Medlem sedan mars 2000263 inlägg
Frågan#1

Har ett problem med en vy, som har en datetime-kolumn som alltid är NULL, när jag försöker skapa ett index på denna vy. Det är en SQL Server 2005-databas.

Jag skapar en vy:

CREATE VIEW vy WITH SCHEMABINDING
SELECT id, namn, null FROM Personer

I denna vyn blir tredje kolumnen av datatypen INT. Det går bra att skapa index på denna vy. Men jag vill att tredje kolumnen ska vara av datatypen datetime.

CREATE VIEW vy WITH SCHEMABINDING
SELECT id, namn, CAST(null AS datetime) FROM Personer

Hit är det inga problem, vyn skapas och kolumnen är av datatypen datetime och det är null överallt. Problemet kommer när jag vill lägga på ett index. Det går ej att skapa ett index eftersom "The view contains a convert that is imprecise or non-deterministic". Går det att lösa på något sätt?
har även provat:

CREATE VIEW vy WITH SCHEMABINDING
SELECT id, namn, CAST('1900-01-01 00:00:00' AS datetime) FROM Personer

Men det blir samma problem när indexet ska skapas.

Medlem sedan mars 2000263 inlägg
#2

Jag har tillfälligt löst problemet genom att i Personer-tabellen lägga till ett fält DummyDate som är datetime.
Sedan i vyn:

CREATE VIEW vy WITH SCHEMABINDING
SELECT id, namn, DummyDate FROM Personer

Men det känns inte optimalt precis....

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)