RETURNING¶
RETURNING 附加在受支持的 INSERT、UPDATE 或 DELETE 语句之后,返回该语句影响行的最终行镜像。
描述¶
RETURNING 子句在一次往返中返回数据修改语句影响的行:
INSERT ... RETURNING返回插入的行,包括生成列和默认值列。UPDATE ... RETURNING返回更新后的行。DELETE ... RETURNING返回被删除的行。
返回表达式列表可以包含目标表列名、目标表名或别名加 .*、别名以及受支持的标量表达式。表达式不能包含聚合函数、窗口函数、子查询、变量、外部 UDF 或易变函数。old 和 new 伪命名空间不受支持。
语法¶
INSERT INTO table [(column, ...)] VALUES (...) RETURNING expression [, expression] ...
UPDATE table [AS alias] SET column = value, ... RETURNING expression [, expression] ...
DELETE FROM table WHERE ... RETURNING expression [, expression] ...
参数¶
参数 |
说明 |
|---|---|
|
为每个受影响的行返回的目标表列、 |
示例¶
DROP DATABASE IF EXISTS returning_demo;
CREATE DATABASE returning_demo;
USE returning_demo;
CREATE TABLE t (id BIGINT AUTO_INCREMENT PRIMARY KEY, v INT DEFAULT 7, note VARCHAR(30));
INSERT INTO t(note) VALUES ('values') RETURNING id, v, note;
INSERT INTO t(v, note) SELECT 11, 'select' RETURNING t.*, v * 2 AS twice;
UPDATE t AS x SET v = v + 10 WHERE note = 'values' RETURNING x.id, x.v, x.note;
UPDATE t SET v = 99 WHERE id = -1 RETURNING id, v;
DELETE FROM t WHERE note = 'select' RETURNING id, v, note;
DROP DATABASE returning_demo;
限制¶
RETURNING 仅支持普通持久表以及语法部分所示的单表 DML 形式。以下形式不受支持:
REPLACE、MERGE INTO、INSERT IGNORE、INSERT OVERWRITE和INSERT ... ON DUPLICATE KEY UPDATE。带
WITH子句的 DML 语句或显式PARTITION选择。带优先级或
IGNORE修饰符的语句、连接或多表UPDATE以及UPDATE ... FROM。DELETE QUICK、DELETE IGNORE、DELETE USING和多表DELETE。临时表、外部表、内部表、系统表以及非表目标。
聚合或窗口表达式、子查询、变量、外部 UDF、易变函数,以及在
RETURNING列表中引用非目标来源。