首页/数据/SQL 速查/RETURNING 返回插入结果(PostgreSQL)
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

RETURNING 返回插入结果(PostgreSQL)

插入/更新/删除后直接返回受影响的行数据:PostgreSQL 全支持;MySQL 没有 RETURNING,只能取自增 ID。

SQL 速查数据更新于 2026-10-12

PostgreSQL

PostgreSQL
INSERT INTO users (name) VALUES ('alice')
RETURNING id, created_at;

UPDATE orders SET status = 'paid' WHERE id = 1
RETURNING id, status;

DELETE FROM sessions WHERE expire_at < now()
RETURNING id;

MySQL 替代

MySQL 替代
INSERT INTO users (name) VALUES ('alice');
SELECT LAST_INSERT_ID();   -- 自增主键
PostgreSQLINSERT/UPDATE/DELETE 都支持 RETURNING,省一次回查
MySQL无 RETURNING;自增主键用 LAST_INSERT_ID(),其它列需要回查

易错点

  • MySQL 用户迁移到 PG 后继续用“插入后再查自增 ID”模式:并发下会取到别人的行,必须改 RETURNING
  • RETURNING 在批量插入时返回每一行,数据量大时注意结果集大小

数据来源与参考

  • PostgreSQL Documentation · INSERT
  • MySQL 8.0 Reference Manual · INSERT
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌