De instructie INSERT

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

  • Een lijst met waarden die als een nieuwe record moeten worden ingevoegd

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

De instructie INSERT is als volgt gestructureerd:

Kopiëren
INSERT INTO tabelnaam [(kolomnaam, ...)] VALUES (uitdr, ...)

kolomnaam 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 kolomnaam weglaat, moeten de waarde-uitdrukkingen (uitdr) 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. kolomnaam kan ook een veldherhaling opgeven, zoals laatsteDatums[4].

uitdr is de lijst met uitdrukkingen die de waarden voor de kolommen van de nieuwe record geeft. Doorgaans zijn de uitdrukkingen constante waarden voor de kolommen (maar ze kunnen ook een subopvraag 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 een lijst met uitdrukkingen in.

Kopiëren
INSERT INTO werkn (achternaam, voornaam, werkn_ID, salaris, in_dienst)
   VALUES ('Smit', 'Jan', 'E22345', 27500, DATE '2028-06-05')

Elke INSERT-instructie voegt één record aan de databasetabel toe. In dit geval is een record toegevoegd aan de werknemersdatabasetabel werkn. Waarden worden opgegeven voor vijf kolommen. Aan de resterende kolommen in de tabel wordt een lege waarde (Null) toegewezen.

Belangrijk  

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.

Bij het gebruik van de functie PutAs() geeft u het type op: PutAs (kol, ‘type’), waarbij de typewaarde een ondersteund bestandstype is dat is beschreven in De inhoud van een containerveld ophalen: de functie CAST() en GetAs().

De SELECT-instructie is een opvraag die als resultaat waarden geeft voor elke kolomnaam-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 werkn1 (voornaam, achternaam, werkn_ID, afd, salaris)
   SELECT voornaam, achternaam, werkn_ID, afd, salaris FROM werkn
   WHERE afd = '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.