Partager via


Instruction INSERT INTO (Microsoft Access SQL)

S’applique à : Access 2013, Office 2013

Ajoute un ou plusieurs enregistrements à une table. Cette opération est une requête Ajout.

Syntaxe

Requête Ajout avec plusieurs enregistrements :

INSERT INTO cible [(champ1[, champ2[, …]])] [IN externaldatabase] SELECT [source.] field1[, field2[, ...] FROM expressiontable

Requête Ajout avec un seul enregistrement :

INSERT INTO cible [(champ1[, champ2[, …]])] VALUES (valeur1[, valeur2[, …])

L’instruction INSERT INTO comprend les éléments suivants :

Élément

Description

target

Nom de la table ou de la requête à laquelle ajouter les enregistrements.

champ1, champ2

Noms des champs auxquels ajouter les données, si après un argument target, ou noms des champs à partir desquels obtenir les données, si après un argument source.

basededonnéesexterne

Chemin d'accès à une base de données externe. Pour une description du chemin d’accès, voir la clause IN.

source

Nom de la table ou de la requête à partir de laquelle copier les enregistrements.

expressiontable

Nom des tables à partir desquelles les enregistrements sont insérés. Cet argument peut être un nom de table simple ou un composé issu d’une opération INNER JOIN, LEFT JOIN ou RIGHT JOIN, ou d’une requête enregistrée.

valeur1, valeur2

Valeurs à insérer dans les champs spécifiques du nouvel enregistrement. Chaque valeur est insérée dans le champ qui correspond à la position de la valeur dans la liste : valeur1 est insérée dans champ1 du nouvel enregistrement, valeur2 dans champ2, et ainsi de suite. Vous devez séparer les valeurs par une virgule et placer les champs de texte entre guillemets (' ').

Remarques

Vous pouvez utiliser l’instruction INSERT INTO pour ajouter un enregistrement unique à une table à l’aide de la syntaxe de requête Ajout d’enregistrement unique indiquée ci-dessus. Dans ce cas, votre code spécifie le nom et la valeur de chaque champ de l’enregistrement. Vous devez spécifier chacun des champs de l’enregistrement auxquels une valeur doit être attribuée, et la valeur de chaque champ. Si vous ne spécifiez pas tous les champs, la valeur par défaut ou une valeur Null est insérée dans les colonnes vides. Les enregistrements sont ajoutés à la fin de la table.

Vous pouvez également utiliser INSERT INTO pour ajouter un jeu d’enregistrements d’une autre table ou requête à l’aide de select ... Clause FROM comme indiqué ci-dessus dans la syntaxe de requête d’ajout à plusieurs enregistrements. Dans ce cas, la clause SELECT spécifie les champs à ajouter à la table cible spécifiée.

La table source ou cible peut spécifier une table ou une requête. Si une requête est spécifiée, le moteur de base de données Microsoft Access ajoute des enregistrements à toutes les tables spécifiées par la requête.

INSERT INTO est facultative mais lorsqu’elle est incluse, elle précède l’instruction SELECT.

Si votre table de destination contient une clé primaire, assurez-vous que vous ajoutez des valeurs uniques et non Null dans les champs de clé primaire. Si ce n’est pas le cas, le moteur de base de données Microsoft Access n’ajoutera pas les enregistrements.

Si vous ajoutez des enregistrements à une table avec un champ NuméroAuto et que vous voulez renuméroter les enregistrements ajoutés, n’incluez pas le champ NuméroAuto dans votre requête. Incluez le champ NuméroAuto dans la requête si vous voulez conserver les valeurs d’origine du champ.

Utilisez la clause IN pour ajouter des enregistrements à une table dans une autre base de données.

Pour créer une table, utilisez l’instruction SELECT... INTO au lieu de créer une requête Création de table.

Pour savoir quels enregistrements seront ajoutés avant d’exécuter la requête Ajout, exécutez d’abord une requête sélectionnée qui utilise les mêmes critères de sélection, et observez les résultats.

Une requête Ajout copie des enregistrements à partir d'une ou plusieurs tables vers une autre. Les tables contenant les enregistrements que vous ajoutez ne sont pas concernées par la requête Ajout.

Au lieu d’ajouter des enregistrements existants à partir d’une autre table, vous pouvez spécifier la valeur de chaque champ dans un nouvel enregistrement unique à l’aide de la clause VALUES. Si vous omettez la liste de champs, la clause VALUES doit inclure une valeur pour chaque champ de la table ; sinon, l’opération INSERT échouera. Utilisez une instruction INSERT INTO supplémentaire avec une clause VALUES pour chaque enregistrement supplémentaire que vous souhaitez créer.

Liens fournis par la communauté UtterAccess. UtterAccess est un forum d’aide et wiki de Microsoft Access réputé.

Exemple

Cet exemple sélectionne tous les enregistrements dans une table New Customers hypothétique et les ajoute à la table Customers. Lorsque les colonnes individuelles ne sont pas désignées, les noms de colonne de la table SELECT doivent correspondre exactement à ceux de la table INSERT INTO.

    Sub InsertIntoX1() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Select all records in the New Customers table  
        ' and add them to the Customers table. 
        dbs.Execute " INSERT INTO Customers " _ 
            & "SELECT * " _ 
            & "FROM [New Customers];" 
             
        dbs.Close 
     
    End Sub

Cet exemple crée un nouvel enregistrement dans la table Employees.

    Sub InsertIntoX2() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Create a new record in the Employees table. The  
        ' first name is Harry, the last name is Washington, 
        ' and the job title is Trainee. 
        dbs.Execute " INSERT INTO Employees " _ 
            & "(FirstName,LastName, Title) VALUES " _ 
            & "('Harry', 'Washington', 'Trainee');" 
             
        dbs.Close 
     
    End Sub