INSERT-sats
Använd INSERT-satsen om du vill skapa poster i en databastabell. Du kan ange något av följande:
-
En eller flera värdelistor som ska infogas som nya poster
-
En
SELECT-sats som kopierar data från en annan tabell som ska infogas som en uppsättning nya poster
Formatet för INSERT-satsen är:
INSERT INTO tabellnamn [(kolumnnamn, ...)] VALUES [(uttr, ...), ...]
INSERT INTO tabellnamn [(kolumnnamn, ...)] SELECT kolumnnamn, ... FROM tabellnamn [WHERE uttr]
Med VALUES
kolumnnamn är en valfri lista över kolumnnamn som ger tillgång till namnet och ordningsföljden för de kolumner vilkas värde anges i instruktionen VALUES. Om du utelämnar kolumnnamn måste listan med uttryck (uttr) ge värden för alla kolumner som är definierade i tabellen. De måste också komma i samma ordningsföljd som kolumnerna definierades i tabellen.
Listan med uttryck (uttr) ger värdena för kolumnerna i en ny post. Om du vill lägga till flera poster anger du en lista med uttryck inom parentes för varje post, avgränsade med kommatecken. Vanligtvis består en lista med uttryck av ett konstant värde för varje kolumn (men listan kan också vara en underfråga). Värden för teckensträngar måste omslutas av enkla citationstecken ('). Om du vill ta med ett enkelt citationstecken i ett värde för en teckensträng som omsluts av enkla citationstecken, använder du två enkla citationstecken tillsammans (t.ex. 'Don''t').
Delfrågor måste omges av parenteser.
Exempel
Infoga två listor med uttryck.
INSERT INTO anst (efternamn, förnamn, anst_id, lön, anst_datum)
VALUES ('Svenssson', 'Johan', 'E22345', 27500, DATE '2028-06-05'),
('Martinsson', 'Anna', 'E24682', 28500, DATE '2029-09-30')
Den här INSERT-satsen lägger till en post i databastabellen för varje angiven värdelista. I det här fallet har två poster lagts till i databastabellen för anställda, anst. Värden har angetts för fem kolumner. De återstående kolumnerna i tabellen tilldelas ett tomt värde, dvs. Null.
Med SELECT
SELECT-satsen är en fråga som returnerar värden för varje kolumnnamn värde som anges i listan över kolumnnamn. Att använda en SELECT-sats i stället för en lista över värdeuttryck medför att du kan välja en uppsättning rader från en tabell och infoga den i en annan tabell med en enda INSERT-sats.
Exempel
Infoga med hjälp av en SELECT-sats.
INSERT INTO anst1 (förnamn, efternamn, anst_id, avd, lön)
SELECT förnamn, efternamn, anst_id, avd, lön från anst
WHERE avd = ‘D050'
I den här typen av INSERT-satser måste antalet kolumner som ska infogas matcha antalet kolumner i SELECT-satsen. Listan över kolumner som ska infogas måste motsvara kolumnerna i SELECT-satsen på samma sätt som den måste motsvara en lista över värdeuttryck i den andra typen av INSERT-satser. Exempel: Den första infogade kolumnen motsvarar den första valda kolumnen; den andra infogade kolumnen motsvarar den andra valda, osv.
Storleken och datatypen för dessa motsvarande kolumner måste överensstämma. Varje kolumn i listan SELECT bör ha en datatyp som ODBC- eller JDBC-drivrutinen accepterar vid en vanlig INSERT/UPDATE av den motsvarande kolumnen i listan INSERT. Värdena trunkeras när storleken på värdet i kolumnen i listan SELECT är större än storleken på den motsvarande kolumnen i listan INSERT.
SELECT-satsen beräknas innan några värden infogas.
Kommentarer
-
I containerfält kan du bara använda
INSERTmed text, såvida du inte förbereder ett parameteruttryck och strömmar data från programmet. Om du vill använda binära data kan du helt enkelt tilldela filnamnet genom att omge det med enkla citationstecken eller använda funktionenPutAs(). När du anger filnamnet härleds filtypen från filtillägget:KopieraINSERT INTO tabellnamn (containernamn) VALUES (? AS 'filnamn.filtillägg')Filtyper som inte stöds kommer att sättas in som typen FIL.
När du använder funktionen
PutAs()ska du ange typen:PutAs(col, 'typ'), där värdet typ är en filtyp som stöds enligt beskrivningen i Hämta innehållet i ett containerfält: Funktionen CAST() och funktionen GetAs(). -
kolumnnamnkan även ange en fältrepetition, till exempellastDates[4].