立即抓取mySql中自动生成的字段以供使用
Posted
技术标签:
【中文标题】立即抓取mySql中自动生成的字段以供使用【英文标题】:Immediately grab auto-generated field in mySql for use 【发布时间】:2021-01-10 05:47:37 【问题描述】:在此获取期间,它会创建一条新记录,并在 mysql 表中自动增加一个名为“employee_id”的字段。这部分工作正常。
但现在我想添加的是,如果可能的话,立即在同一个函数中,使用自动生成的值设置状态。这可能吗?
这是我当前状态下的函数。上面写着“this.setState(selectedEmployee...”的行当前中断了它。我要做的是设置 selectedEmployee 状态,以便我可以在那个 'createQuestions' 函数中使用它。
createInterview()
fetch(API_URL + `/interview/create`,
method: "PUT",
body: JSON.stringify(
employee: this.state.employee,
employment_level: this.state.employment_level,
audit_id: this.props.auditId,
),
headers: "Content-Type": "application/json" ,
)
.then((res) =>
if (!res.ok)
throw new Error();
return res.json();
)
.then((data) => console.log(data))
.then((data) => this.setState( selectedEmployeeId: data.employee_id ))
.catch((err) => console.log(err))
.then(() => this.createQuestions())
.then(() => this.getAllInterviews());
this.setState( showHide: false );
这是我的 API 调用:
app.put("/interview/create", function (req, res)
console.log("It is getting to the route");
const employee = req.body.employee;
const employment_level = req.body.employment_level;
const audit_id = req.body.audit_id;
console.log(`employee: $employee`);
console.log(`employment_level: $employment_level`);
console.log(`audit_id: $ audit_id `);
connection.getConnection(function (err, connection)
connection.query(
`INSERT INTO audit_interview (employee, employment_level, audit_id)
VALUES (?, ?, ?)`,
[
employee,
employment_level,
audit_id
],
function (error, results, fields)
if (error) throw error;
res.json(results);
console.log(`Interview has been created`);
);
connection.release();
);
);
【问题讨论】:
【参考方案1】:是的,您可以在您的 nodejs 程序中重新获得 LAST_INSERT_ID() 的值。在您的完成回调中,添加对results.insertId
的引用,可能是这样的。它是传递给该回调的 results
项的属性。
function (error, results, fields)
if (error) throw error;
const insertId = results.insertId;
res.json(results);
console.log(`Interview has been created`);
而且,与这样的查询不同,
SELECT MAX(id) FROM table; /* don't do this, it's wrong! */
使用该results.insertId
值即使在大规模并发的情况下也是竞争条件证明的。
【讨论】:
以上是关于立即抓取mySql中自动生成的字段以供使用的主要内容,如果未能解决你的问题,请参考以下文章