Spec-Zone.ru › MariaDB

INSERT...RETURNING

MariaDB, начиная с 10.5.0

INSERT ... RETURNING был добавлен в MariaDB 10.5.0 и возвращает результат набора вставленных строк.

Синтаксис

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
 [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
 [ ON DUPLICATE KEY UPDATE
   col=expr
     [, col=expr] ... ] [RETURNING select_expr 
      [, select_expr ...]]

Или:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [PARTITION (partition_list)]
    SET col={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col=expr
        [, col=expr] ... ] [RETURNING select_expr 
      [, select_expr ...]]

Или:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col=expr
        [, col=expr] ... ] [RETURNING select_expr 
      [, select_expr ...]]

Описание

INSERT ... RETURNING возвращает результат набора вставленных строк.

Это возвращает перечисленные столбцы для всех вставленных строк или, как альтернатива, указанное выражение SELECT. Любые SQL-выражения, которые могут быть вычислены, могут использоваться в выражении select для предложения RETURNING, включая виртуальные столбцы и псевдонимы, выражения, использующие различные операторы, такие как побитовые, логические и арифметические операторы, функции строк, функции даты и времени, числовые функции, функции управления потоком, вторичные функции и хранимые функции. Вместе с этим можно также использовать утверждения с подзапросами и подготовленными операторами.

Примеры

Простые операторы INSERT:

CREATE OR REPLACE TABLE t2 (id INT, animal VARCHAR(20), t TIMESTAMP);

INSERT INTO t2 (id) VALUES (2),(3) RETURNING id,t;
+------+---------------------+
| id   | t                   |
+------+---------------------+
|    2 | 2021-04-28 00:59:32 |
|    3 | 2021-04-28 00:59:32 |
+------+---------------------+
INSERT INTO t2(id,animal) VALUES (1,'Dog'),(2,'Lion'),(3,'Tiger'),(4,'Leopard')  
  RETURNING id,id+id,id&id,id||id;
+------+-------+-------+--------+
| id   | id+id | id&id | id||id |
+------+-------+-------+--------+
|    1 |     2 |     1 |      1 |
|    2 |     4 |     2 |      1 |
|    3 |     6 |     3 |      1 |
|    4 |     8 |     4 |      1 |
+------+-------+-------+--------+

Использование хранимых функций в RETURNING

DELIMITER |
CREATE FUNCTION f(arg INT) RETURNS INT
    BEGIN
       RETURN (SELECT arg+arg);
    END|

DELIMITER ;

PREPARE stmt FROM "INSERT INTO t1 SET id1=1, animal1='Bear' RETURNING f(id1), UPPER(animal1)";

EXECUTE stmt;
+---------+----------------+
| f(id1)  | UPPER(animal1) |
+---------+----------------+
|       2 | BEAR           |
+---------+----------------+

Подзапросы в предложении RETURNING, возвращающие более одной строки или столбца, использовать нельзя.

Агрегатные функции не могут использоваться в предложении RETURNING. Поскольку агрегатные функции работают над набором значений, и если цель состоит в получении счетчика строк, то ROW_COUNT() с SELECT можно использовать или его можно использовать в INSERT...SELECT...RETURNING, если таблица в предложении RETURNING не такая же, как таблица INSERT.

См. также

  • INSERT
  • REPLACE ... RETURNING
  • DELETE ... RETURNING
  • Предложение возврата (видео)
Содержимое, воспроизводимое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают мнения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/insertreturning/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API