数据回填
需要获取新增记录的默认时间、更新后的年龄或删除前的名字时,可以使用 FINAL TABLE / OLD TABLE。写入语句直接返回这些值,不需要再执行一次 SELECT。
准备表
CREATE TABLE user_info (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name VARCHAR(64),
age INTEGER,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
插入后获取默认时间
Map<String, Object> saved = jdbcTemplate.queryForMap(
"""
SELECT id, create_time FROM FINAL TABLE (
INSERT INTO user_info (name, age) VALUES (?, ?)
) AS changed
""",
new Object[] { "mali", 18 });
结果包含 id 和数据库生成的 create_time。这里使用查询方法,是因为写入语句同时返回了字段。