注册

如何插入新纪录的同时获取新纪录的主键 id

DM_704219 2023/08/28 779 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 8.0
【操作系统】:Ubuntu 22.04
【CPU】: x86
【问题描述】*:需要在插入新纪录的同时获取新纪录主键 id
参考 mysql 的 协议:
image.png
成功后返回的报文中会带有 last_insert_id, 这个信息就是最新插入的记录的 id 值。
以 mysql nodejs 客户端为例子, insert 语句返回的结果的 insertId 就是新纪录的 id :

connection.query('INSERT INTO posts SET ?', {title: 'test'}, function (error, results, fields) {
  if (error) throw error;
  console.log(results.insertId);
});

pg 则可以通过 returning 来实现:

INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING id;

DM8 如何实现这个效果呢?
文档中提到 DM8 也支持 return 和 returning 语句,但是例子都是存储过程和触发器的,单个语句执行会报错:

insert into roles (id, firstName, lastName, createdAt, updatedAt) values(null, 'xx', 'yy', now(), now()) RETURNING id;
                                                                                                                    *
第 1 行, 第 117 列[;]附近出现错误[-2007]:
语法分析出错.
已用时间: 0.404(毫秒). 执行号:0.
insert into roles (id, firstName, lastName, createdAt, updatedAt) values(null, 'xx', 'yy', now(), now()) RETURNING id into id;
第1 行附近出现错误[-5014]:无效的返回结果存储对象.
已用时间: 0.538(毫秒). 执行号:0.

DM8 单个 insert sql 语句可以实现在插入新纪录的同时获取新纪录的主键 id 吗?

回答 0
暂无回答
扫一扫
联系客服