De instructie INSERT

Gebruik de instructie INSERT om records in een databasetabel te maken. U kunt een van de volgende waarden opgeven:

  • Een of meer lijsten met waarden die moeten worden ingevoegd als nieuwe records

  • Een SELECT-instructie die gegevens uit een andere tabel kopieert die als een nieuwe reeks records moeten worden ingevoegd.

De indelingen van de INSERT-instructie zijn:

Kopiëren
INSERT INTO table_name [(column_name, ...)] VALUES [(expr, ...), ...]
INSERT INTO table_name [(column_name, ...)] SELECT column_name, ... FROM table_name [WHERE expr]

Met VALUES

column_name is een optionele lijst met kolomnamen die de naam en volgorde van de kolommen aangeeft waarvan de waarde in het VALUES-element zijn opgegeven. Als u column_name weglaat, moeten de waarde-uitdrukkingen (expr) waarden bieden voor alle kolommen die in de tabel zijn gedefinieerd en moeten ze dezelfde volgorde hebben als de kolommen die voor de tabel zijn gedefinieerd.

De lijst met expressies (expr) geeft de waarden voor de kolommen van een nieuwe record. Als u meerdere records wilt toevoegen, geeft u voor elke record een lijst met expressies tussen haakjes op, gescheiden door komma's. Meestal bestaat een lijst met expressies uit een constante waarde voor elke kolom (maar de lijst kan ook een subquery zijn). Tekenreekswaarden moet u tussen enkele aanhalingstekens (') plaatsen. Als u een dergelijk aanhalingsteken wilt invoegen in een tekenreekswaarde die zelf al tussen enkele aanhalingstekens is geplaatst, gebruikt u twee opeenvolgende enkele aanhalingstekens (bijvoorbeeld: 'Programma''s').

Subopvragen moeten tussen haakjes worden geplaatst.

Voorbeeld

Voeg twee expressielijsten in.

Kopiëren
INSERT INTO emp (last_name, first_name, emp_id, salary, hire_date)
   VALUES ('Smith', 'John', 'E22345', 27500, DATE '2028-06-05'), 
   ('Marks', 'Alea', 'E24682', 28500, DATE '2029-09-30')

Deze INSERT-instructie voegt één record toe aan de databasetabel voor elke opgegeven waardenlijst. In dit geval zijn er twee records toegevoegd aan de databasetabel werknemer, emp. Waarden worden opgegeven voor vijf kolommen. Aan de resterende kolommen in de tabel wordt een lege waarde (Null) toegewezen.

Met SELECT

De SELECT-instructie is een opvraag die als resultaat waarden geeft voor elke column_name-waarde die in de lijst met kolomnamen is opgegeven. Als u een SELECT-instructie gebruikt in plaats van een lijst met waarde-uitdrukkingen kunt u een reeks rijen uit een tabel selecteren en deze in een andere tabel invoegen met behulp van één INSERT-instructie.

Voorbeeld

Voeg in met een SELECT-instructie.

Kopiëren
INSERT INTO emp1 (first_name, last_name, emp_id, dept, salary)
   SELECT first_name, last_name, emp_id, dept, salary FROM emp
   WHERE dept = 'D050'

In dit type INSERT-instructie moet het aantal in te voegen kolommen overeenkomen met het aantal kolommen in de SELECT-instructie. De lijst met in te voegen kolommen moet overeenkomen met de kolommen in de SELECT-instructie, net zoals deze ook zou moeten overeenkomen met een lijst met waarde-uitdrukkingen in het andere type INSERT-instructie. De eerste ingevoegde kolom komt bijvoorbeeld overeen met de eerste geselecteerde kolom; de tweede ingevoegde kolom met de tweede geselecteerde kolom, enzovoort.

De grootte en het gegevenstype van deze overeenkomende kolommen moet compatibel zijn. Elke kolom in de SELECT-lijst moet een gegevenstype hebben dat het ODBC- of JDBC-clientstuurprogramma accepteert bij een normale INSERT/UPDATE van de overeenkomstige kolom in de INSERT-lijst. Waarden worden afgekapt wanneer de waarde in de kolom van de SELECT-lijst groter is dan die van de overeenkomende kolom van de INSERT-lijst.

De SELECT-instructie wordt geëvalueerd voordat waarden worden ingevoegd.

Opmerkingen 

  • In containervelden kunt u alleen tekst INVOEGEN, tenzij u een instructie met parameters voorbereidt en de gegevens vanuit uw toepassing stroomsgewijs overbrengt. Als u binaire gegevens wilt gebruiken, kunt u de bestandsnaam gewoon toewijzen door deze tussen enkele aanhalingstekens te plaatsen of de functie PutAs() te gebruiken. Wanneer de bestandsnaam wordt opgegeven, wordt het bestandstype afgeleid van de bestandsextensie:

    Kopiëren
    INSERT INTO tabelnaam (containernaam) VALUES (? AS 'bestandsnaam.bestandsextensie')

    Niet-ondersteunde bestandstypen worden ingevoegd als het type FILE.

    Wanneer u de functie PutAs() gebruikt, specificeer dan het type: Putas(col, 'type'), waarbij de typewaarde een ondersteund bestandstype is zoals beschreven in De inhoud van een containerveld ophalen: de functie CAST() en GetAs()

  • column_name kan ook een herhaling van het veld bevatten, bijvoorbeeld lastDates[4].