我将数据库/ sql软件包与oracle驱动程序(“gopkg.in/rana/ora.v4”)配合使用,当我插入数据时,它的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)
}
请告诉我为什么会这样?
最佳答案
从the documentation(添加了重点):
LastInsertIddatabase/sql
包提供了LastInsertId方法,以返回最后插入的行的ID。 Oracle不提供此类功能,但是如果您将... RETURNING col /*LastInsertId*/
附加到SQL,则它将以LastInsertId的形式显示。 注意,您必须用/*LastInsertId*/
(不区分大小写)标记您的RETURNING
部分,以允许ora将最后一列作为LastInsertId()
返回。但是,该列必须适合int64
!