RETURNING

L'instruction INSERT peut inclure une clause RETURNING facultative pour retourner les valeurs de la ligne insérée. Si la clause est spécifiée, elle peut contenir toutes les colonnes spécifiées dans l'instruction ou d'autres colonnes et expressions. Vous pouvez spécifier un astérisque (*) au lieu d'une liste de colonnes pour retourner toutes les valeurs des colonnes de la table. Les valeurs retournées contiennent toutes les modifications apportées dans les déclencheurs BEFORE.

Important

En DML, la commande INSERT .. SELECT avec la clause RETURNING renvoie un curseur (avant Firebird 5.0, il ne pouvait renvoyer qu'un seul enregistrement). Actuellement, les instructions avec la clause RETURNING ne peuvent pas être appliqués avec la clause FOR pour boucler sur un curseur dans PSQL. La clause INSERT .. VALUES avec la clause RETURNING renvoie toujours un enregistrement. Ce comportement peut être modifié dans les futures versions de Firebird.

Example 1. Utilisation de la clause RETURNING dans l'instruction INSERT.
INSERT INTO Scholars (firstname, lastname, address,
  phone, email)
VALUES (
  'Henry', 'Higgins', '27A Wimpole Street',
  '3231212', NULL)
RETURNING lastname, fullname, id;

INSERT INTO Scholars (firstname, lastname, address,
  phone, email)
VALUES (
  'Henry', 'Higgins', '27A Wimpole Street',
  '3231212', NULL)
RETURNING *;

INSERT INTO Dumbbells (first_name, last_name, iq)
SELECT fname, lname, iq
FROM Friends
ORDER BY iq ROWS 1
RETURNING id, first_name, iq
INTO :id, :fname, :iq;
Note
  • La clause RETURNING n'est prise en charge que pour INSERT .. VALUES " et un seul " INSERT .. SELECT.

  • En DSQL, une déclaration utilisant RETURNING retourne toujours exactement une chaîne. Si aucune entrée n'a été insérée, tous les champs de la chaîne retournée auront la valeur NULL. Ce comportement peut être modifié ultérieurement. Dans PSQL, si aucune chaîne n'est insérée, rien n'est renvoyé et toutes les variables cibles conservent leurs valeurs précédentes.

Insertion de colonnes BLOB

L'insertion dans les colonnes BLOB n'est possible que dans les circonstances suivantes :

  1. L'application cliente insère un BLOB via l'API de Firebird. Dans ce cas, cela dépend de l'application, et n'est pas couvert par ce manuel ; . La longueur des chaînes de caractères ne peut dépasser 65 533 octets (64K - 3).

    Note

    La limite de caractères est calculée au moment de l'exécution. Pour les jeux de caractères à plusieurs octets, cela peut être différent. Par exemple, pour une chaîne UTF8 (4 octets par caractère), la limite du littéral de chaîne serait probablement d'environ (floor (65533/4)) = 16383 caractères.

  2. Si la source de données est une colonne BLOB ou une expression qui renvoie une BLOB. Par exemple, lorsque vous utilisez le formulaire INSERT .. SELECT ou dans le code PSQL lorsqu'une variable BLOB est utilisée comme paramètre.