Spec-Zone.ru › MariaDB

ЗАМЕЩЕНИЕ...ВОЗВРАЩАЯ

MariaDB, начиная с 10.5.0

ЗАМЕЩЕНИЕ ... ВОЗВРАЩАЯ было добавлено в MariaDB 10.5.0, и возвращает набор результатов из изменённых строк.

Синтаксис

REPLACE [LOW_PRIORITY | DELAYED]
 [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[RETURNING select_expr 
      [, select_expr ...]]

Или:

REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [PARTITION (partition_list)]
    SET col={expr | DEFAULT}, ...
[RETURNING select_expr 
      [, select_expr ...]]

Или:

REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
    SELECT ...
[RETURNING select_expr 
      [, select_expr ...]]

Описание

REPLACE ... RETURNING возвращает набор результатов из изменённых строк.

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

Примеры

Простое оператор ЗАМЕЩЕНИЯ

REPLACE INTO t2 VALUES (1,'Leopard'),(2,'Dog') RETURNING id2, id2+id2 
as Total ,id2|id2, id2&&id2;
+-----+-------+---------+----------+
| id2 | Total | id2|id2 | id2&&id2 |
+-----+-------+---------+----------+
|   1 |     2 |       1 |        1 |
|   2 |     4 |       2 |        1 |
+-----+-------+---------+----------+

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

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

DELIMITER ;
PREPARE stmt FROM "REPLACE INTO t2 SET id2=3, animal2='Fox' RETURNING f2(id2),
UPPER(animal2)";

EXECUTE stmt;
+---------+----------------+
| f2(id2) | UPPER(animal2) |
+---------+----------------+
|       6 | FOX            |
+---------+----------------+

Подзапросы в операторе

REPLACE INTO t1 SELECT * FROM t2 RETURNING (SELECT id2 FROM t2 WHERE 
id2 IN (SELECT id2 FROM t2 WHERE id2=1)) AS new_id;
+--------+
| new_id |
+--------+
|      1 |
|      1 |
|      1 |
|      1 |
+--------+

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

Агрегатные функции нельзя использовать в предложении RETURNING. Поскольку агрегатные функции работают над набором значений, и если цель — получить количество строк, можно использовать ROW_COUNT() с SELECT, или можно использовать его в ЗАМЕЩЕНИЕ...ВЫБЕРИТЕ...ВОЗВРАЩАЯ, если таблица в предложении 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/replacereturning/

Spec-Zone.ru

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