INSERT-sats

Använd INSERT-satsen om du vill skapa poster i en databastabell. Du kan ange något av följande:

  • En lista över värden som ska infogas som en ny post

  • En SELECT-sats som kopierar data från en annan tabell som ska infogas som en uppsättning nya poster

INSERT-satsen har följande format:

Kopiera
INSERT INTO tabellnamn [(kolumnnamn, ...)] VALUES (uttr, ...)

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 värdeuttrycken (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. kolumnnamn kan även ange en fältrepetition, till exempel lastDates[4].

uttr är den lista över uttryck som ger värdena för den nya postens kolumner. Normalt är uttrycken konstanta värden för kolumnerna (men de kan också vara en delfrå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 en lista över uttryck.

Kopiera
INSERT INTO anst (efternamn, förnamn, anst_id, lön, anst_datum)
   VALUES ('Andersson', 'Anders', 'E22345', 27500, DATE '2028-06-05')

Varje INSERT-sats lägger till en post i databastabellen. I det här fallet har en post lagts till i databastabellen över anställda, anst. Värden har angetts för fem kolumner. De återstående kolumnerna i tabellen tilldelas ett tomt värde, dvs. Null.

Viktigt  

I containerfält kan du bara använda INSERT med 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 funktionen PutAs(). När du anger filnamnet härleds filtypen från filtillägget:

Kopiera
INSERT INTO tabellnamn (containernamn) VALUES(? AS 'filnamn.filtillägg')

Filtyper som inte stöds kommer att sättas in som typen FIL.

Ange typen när du använder funktionen PutAs(): PutAs(kol, 'typ'), där typvärdet är en filtyp som stöds, enligt beskrivningen i Hämta innehållet i ett containerfält: Funktionen CAST() och funktionen GetAs().

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.

Kopiera
INSERT INTO anst1 (förnamn, efternamn, anst_id, avd, lön)
   SELECT förnamn, efternamn, anst_id, avd, lön FROM 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.