INSERT (SQL Server Compact Edition)

Ajoute de nouvelles lignes à une table.

Syntaxe

INSERT [INTO] 
      table_name  [ ( column_list ) ] 
      { VALUES 
      ( { DEFAULT | NULL | expression } [ ,...n] ) 
| derived_table
       }

Arguments

  • [INTO]
    Mot clé facultatif qui peut être utilisé entre INSERT et la table cible.
  • table_name
    Nom de la table qui doit recevoir les données.
  • ( column_list )
    Liste d'une ou plusieurs colonnes auxquelles seront ajoutées les données. L'argument column_list doit être placé entre parenthèses et délimité par des virgules.
  • VALUES
    Représente la liste des valeurs de données à insérer. Il doit exister une valeur de données pour chaque colonne de l'argument column_list, si celui-ci est spécifié, ou de la table. La liste des valeurs doit être placée entre parenthèses.
  • DEFAULT
    Indique que la valeur par défaut définie pour une colonne doit être utilisée par Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition).
  • NULL
    Indique que la valeur est inconnue. Une valeur NULL diffère d'une valeur vide ou égale à zéro.
  • expression
    Constante, variable ou expression.
  • derived_table
    Toute instruction SELECT valide qui renvoie des lignes de données à insérer dans la table.

Notes

Pour remplacer des données dans une table, vous devez utiliser l'instruction DELETE afin d'effacer les données existantes puis charger les nouvelles données à l'aide de l'instruction INSERT. Pour modifier des valeurs de colonne dans des lignes existantes, utilisez l'instruction UPDATE.

Si vous n'insérez pas l'argument column_list, une liste de colonnes d'insertion identifiant toutes les colonnes de la table dans l'ordre croissant de leurs positions ordinales est implicitement appliquée.

Chaque colonne d'une table ne peut être identifiée qu'une fois dans l'argument column_list.

Si une colonne n'est pas répertoriée dans l'argument column_list, SQL Server Compact Edition doit être en mesure de fournir une valeur basée sur la définition de la colonne ; sinon, la ligne ne peut pas être chargée. SQL Server Compact Edition fournit automatiquement une valeur pour la colonne si celle-ci :

  • possède une propriété IDENTITY. La valeur d'identité incrémentielle suivante est utilisée ;
  • possède une valeur par défaut. La valeur par défaut de la colonne est utilisée.
  • peut avoir pour valeur NULL. Une valeur NULL est utilisée.

La liste de colonnes et la liste VALUES doivent être utilisées lors de l'insertion de valeurs explicites dans une colonne d'identité. Si les valeurs de la liste VALUES ne sont pas disposées dans le même ordre que les colonnes de la table ou ne concernent qu'une partie de celles-ci, vous devez utiliser l'argument column_list pour spécifier explicitement la colonne qui stocke chaque valeur entrante.

Lorsque vous utilisez le paramètre DEFAULT pour spécifier une valeur de colonne, la valeur par défaut de cette colonne est insérée. Si aucune valeur par défaut n'est définie pour la colonne et que celle-ci accepte les valeurs NULL, la valeur NULL est insérée. Le paramètre DEFAULT n'est pas valide pour une colonne d'identité.

Les colonnes affectées du type de données uniqueidentifier stockent des valeurs binaires sur 16 octets au format particulier. SQL Server Compact Edition génère automatiquement des valeurs pour les colonnes ROWGUID de type de données uniqueidentifier, ce qui n'est pas le cas pour les colonnes d'identité. Pendant une opération d'insertion, vous pouvez utiliser, pour les colonnes uniqueidentifier, des variables de type de données uniqueidentifier et des constantes de chaîne sous la forme xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, soit 36 caractères, traits d'union compris, où x représente un chiffre hexadécimal de la plage 0 à 9 ou a à f. Par exemple, la valeur 6F9619FF-8B86-D011-B42D-00C04FC964FF est correcte pour une colonne ou variable uniqueidentifier.

Lorsque vous insérez des lignes, les règles suivantes s'appliquent :

  • Si une valeur est chargée dans des colonnes de type de données nchar, nvarchar ou varbinary, le remplissage ou la troncation d'espaces à droite (espaces pour les types de données nchar et nvarchar, zéros pour le type de données varbinary) sont déterminés conformément au tableau ci-après.

    Type de données Opération par défaut

    nchar/binary

    Remplit la valeur initiale d'espaces à droite pour les colonnes de type de données nchar et de zéros à droite pour les colonnes de type de données binary, dans la limite de la longueur de la colonne.

    nvarchar

    Les espaces à droite dans les valeurs caractère insérées dans les colonnes de type de données nvarchar ne sont pas tronqués. Les valeurs ne sont pas remplies dans la limite de la longueur de la colonne.

    varbinary

    Les zéros à droite dans les valeurs binaires insérées dans les colonnes de type de données varbinary ne sont pas tronqués. Les valeurs ne sont pas remplies dans la limite de la longueur de la colonne.

  • Si une instruction INSERT viole une contrainte ou une règle, ou qu'elle possède une valeur incompatible avec le type de données de la colonne, elle échoue et SQL Server Compact Edition affiche un message d'erreur.

  • Si l'instruction INSERT charge plusieurs lignes à l'aide de l'instruction SELECT, toute violation de règle ou de contrainte en rapport avec les valeurs en cours de chargement provoque l'interruption totale de l'instruction et aucune ligne n'est chargée.

Exemples de code

A. Utilisation d'une instruction INSERT simple

L'exemple suivant ajoute une nouvelle entreprise à la table Customers. Lorsqu'une information n'est pas disponible, une valeur NULL est insérée.

INSERT INTO Customers VALUES ('TPC', 'The Phone Company', 'John Kane', 'Owner', NULL, 'Forks', NULL, NULL, 'USA', NULL, DEFAULT)

B. Insertion de données dans un ordre différent de celui des colonnes

L'exemple suivant utilise l'argument column_list et la liste VALUES pour spécifier explicitement les valeurs à insérer dans chaque colonne de la table Customers.

INSERT INTO Customers (CustomerID, CompanyName, Country, Phone) VALUES ('WWI', 'Wide World Importers', 'USA', '206-321-8765')

C. Insertion de données dont le nombre de valeurs est inférieur à celui des colonnes

Dans l'exemple suivant, la table Employees possède trois colonnes : EmployeeID, LastName et FirstName. L'instruction suivante ajoute « Ben Smith » à la table Employees sans indiquer de valeur pour EmployeeID.

INSERT Employees (LastName, FirstName) VALUES ('Smith', 'Ben')

D. Insertion de données à l'aide d'une table dérivée

L'exemple suivant utilise une derived_table pour insérer des valeurs*.*

INSERT INTO Table1 (col1, col2) SELECT (col1, col2) from Table2

E. Insertion de valeurs de date

L'exemple suivant montre comment insérer une valeur de date*.*

INSERT INTO MyOrders (OrderID, OrderDate) VALUES (34, '4/2/2004')

Voir aussi

Aide et information

Assistance sur SQL Server Compact Edition