我将数据库/ 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!

07-24 19:56