我正在使用带有Oracle驱动程序(“ gopkg.in/rana/ora.v4”)的数据库/ sql程序包,当我插入数据时,它的LastInsertId方法返回0,而数据已成功插入。 附加代码。
package main
import (
“database/sql”
“fmt”
_ "gopkg.in/rana/ora.v4"
)
func main() {
conn, err = sql.Open(“ora”,
username+"/"+password+"@"+host+":"+port+"/"+sid)
query := “INSERT INTO Table (C2) VALUES (:C2)”
result, err := conn.Exec(query, “Test”)
if err!= nil {
panic(err)
}
lastId := result.LastInsertId() // returning 0
fmt.Println(lastId)
}
请告诉我为什么会这样?
答案 0 :(得分:1)
来自the documentation(添加了重点):
LastInsertId
database/sql
包提供了LastInsertId方法来返回最后插入的行的ID。 Oracle不提供此类功能,但是如果在SQL后面附加... RETURNING col /*LastInsertId*/
,则它将显示为LastInsertId。请注意,您必须用/*LastInsertId*/
进行标记(大小写)不敏感)RETURNING
部分,以允许ora将最后一列返回为LastInsertId()
。不过,该列必须适合int64
!