När en tabell skapas i en databas definieras tillhörigheten, eller datatypen, för varje kolumn i tabellen av SQL-satsen som används för att skapa tabellen. Även om tillhörighetsdeklarationer kan utelämnas är det en god idé att explicit deklarera kolumntillhörigheten i
CREATE TABLE
-satser (SQL).
I regel returneras alla objekt som lagras i en databas med en
INSERT
-sats som en instans av samma datatyp när du kör en
SELECT
-sats. Datatypen för hämtade värden kan dock vara en annan beroende på tillhörigheten för databaskolumnen som värdet lagras i. Om datatypen för ett värde som lagras i en kolumn inte stämmer överens med kolumnens tillhörighet, försöker databasen konvertera värdet så att det matchar kolumnens tillhörighet. Om en databaskolumn till exempel deklareras med tillhörigheten
NUMERIC
, görs ett försök att konvertera infogade data i en numerisk lagringsklass (
INTEGER
eller
REAL
) innan dessa data lagras i databasen. Databasen genererar ett fel om dessa data inte kan konverteras. Regeln innebär att om strängen ”12345” infogas i en
NUMERIC
-kolumn, konverteras den automatiskt till heltalet 12345 innan den lagras i databasen. När den hämtas med en
SELECT
-sats, returneras värdet som en instans av en numerisk datatyp (till exempel Number) i stället för en stränginstans.
Det bästa sättet att undvika oönskad datatypskonvertering är att följa dessa två regler: Definiera först varje kolumn med en tillhörighet som stämmer överens med den typ av data som ska lagras i kolumnen. Infoga sedan endast värden vilkas datatyp stämmer överens med den definierade tillhörigheten. Det finns två fördelar med att följa dessa regler. När du infogar data konverteras de inte på ett oväntat sätt (vilket kanske hade medfört att de inte längre uppfyllde sitt avsedda syfte). När du hämtar data returneras de dessutom med sin ursprungliga datatyp.
Mer information om tillgängliga kolumntillhörighetstyper och hur du använder datatyper i SQL-satser finns i
Datatyper som stöds
.
|
|
|