MySQL
MySQL
INSERT INTO orders (user_id) VALUES (10);
SELECT LAST_INSERT_ID(); -- 本连接本次插入的首个自增值
-- 多行插入时返回首行的自增值PostgreSQL
PostgreSQL
INSERT INTO orders (user_id) VALUES (10) RETURNING id;
-- 或使用序列(需知道序列名)
SELECT currval(pg_get_serial_sequence('orders', 'id'));| MySQL | LAST_INSERT_ID() 按连接隔离,连接池里要与插入用同一连接 |
|---|---|
| PostgreSQL | 推荐 RETURNING;currval 依赖序列名且需同会话先 nextval |
| 禁用 | 不要用 SELECT MAX(id):并发下会取错 |