我使用jmoiron / sqlx库与Go应用程序中的PostgreSql服务器进行通信。在我的应用程序的某个地方,我有以下代码:
sqlQuery := `
INSERT INTO table_to_insert (
code,
status,
create_time,
create_by
) VALUES (
'',
0,
CURRENT_TIMESTAMP,
0
) RETURNING id
`
datas, err := tx.NamedExec(sqlQuery, structToInsert)
问题:如何使用return from获取最后的插入ID tx.NamedExec()
?我试过了,datas.LastInsertId()
但总是返回0。
注意:确保将postgres插入成功。
这样做的原因是因为PostgreSQL没有返回您最后插入的ID。这是因为仅当您在使用序列的表中创建新行时,最后插入的ID才可用。
如果您实际上在分配了序列的表中插入一行,则必须使用RETURNING
Clause。这样的东西:INSERT INTO table (name) VALUES("val") RETURNING id"
。
我不确定您的驱动程序,但是在pq中,您将通过以下方式进行操作:
lastInsertId := 0
err = db.QueryRow("INSERT INTO brands (name) VALUES($1) RETURNING id", name).Scan(&lastInsertId)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句