Alt om programmering som jeg selv finner interessant. No more, no less. Trolig vil det være mest om webprogrammering, .NET og andre ting jeg jobber med fast.

onsdag, desember 20, 2006

SQL Server og oppdateringsproblemer med views

Et view er en kompilert visning av data fra en eller flere tabeller, gjerne med både horisontale og vertikale utvalg. Et view kan lages med SELECT * eller spesifisering av felter som skal inngå i visningen.

Normalt når en kjører SELECT * vil en hente ut alle felt fra tabellen(e) spørringen gjelder for. Med et view er det annerledes siden det skal være en fast, alternativ visning av et utvalg data. SQL Server vil derfor ved oppretting av et view med SELECT * hente ut alle feltnavn og benytter disse i visninger siden. Problemet oppstår dersom en legger til et eller flere felt i tabellen view'et er opprettet for -- data blir "plutselig" feilplassert.


Tabellen over inneholder felt med ulike datatyper for å lettere vise problemet. Et view opprettes for tabellen:

Merk at All Columns er valgt og ikke spesifikke felt. Nederst vises dataene i tabellen som forventet.

Så gjør vi en liten endring i tabelldefinisjonen:

Over er det lagt til et nytt felt Felt_Nytt. Det er også satt en standardverdi for feltet slik at problemet med view'et blir lettere å se.

Og her er view'et nå:
Feltnavnene er de samme som når view'et først ble laget, men dataene har blitt forskjøvet. Legg merke til at Felt1 inneholder teksten til det nye feltet foran (som ikke vises). Felt2 har verdien til Felt1 og Felt3 har verdien til Felt2.

Dette problemet oppstår imidlertid ikke når alle feltnavnene spesifiseres i view'et. Det er da mulig å gjøre endringer i tabelldefinisjonen uten at view'et påvirkes (så lenge du ikke sletter et felt, vel og merke).

Om meg

Bildet mitt
I love music. And computers. And Dostoevsky, too.