使用带有Oracle驱动程序的数据库/ SQL包时,LastInsertId返回0

时间:2018-08-28 10:17:14

标签: oracle go last-insert-id lastinsertid

我正在使用带有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)
}

请告诉我为什么会这样?

1 个答案:

答案 0 :(得分:1)

来自the documentation(添加了重点):

  

LastInsertId

     

database/sql包提供了LastInsertId方法来返回最后插入的行的ID。 Oracle不提供此类功能,但是如果在SQL后面附加... RETURNING col /*LastInsertId*/,则它将显示为LastInsertId。请注意,您必须用/*LastInsertId*/进行标记(大小写)不敏感)RETURNING部分,以允许ora将最后一列返回为LastInsertId()。不过,该列必须适合int64