当使用 GraphQL 突变创建记录时,它期望返回完整的对象,例如:
mutation {
createPost(title: "Good morning") {
id
title
}
}
如何可靠地让 MySQL 返回新插入的项目?我目前正在这样做:
INSERT INTO posts(title) VALUES('Good morning');
SELECT * FROM posts WHERE id = LAST_INSERT_ID();
但我不确定这是否是最好的方法。如果其他用户碰巧在我自己的用户之后立即执行INSERT
怎么办?LAST_INSERT_ID()
引用他们的主密钥 ID 而不是我的主密钥 ID 吗?
这就是
我们上一份工作的方式,从来没有遇到过任何问题。文档说它是每个连接,因此您无需担心另一个连接会更改它。
需要注意的一件事是使用一个 INSERT 语句插入多行。在这种情况下,LAST_INSERT_ID(( 将返回第一个插入的 ID。