LastInsertId возвращает 0 при использовании пакета database / sql с драйвером oracle - PullRequest
0 голосов
/ 28 августа 2018

Я использую пакет database / 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)
}

Скажите, пожалуйста, почему это происходит?

1 Ответ

0 голосов
/ 28 августа 2018

С документация (выделение добавлено):

LastInsertId

Пакет database/sql предоставляет метод LastInsertId для возврата идентификатора последней вставленной строки. Oracle не предоставляет такую ​​функциональность, но если вы добавите ... RETURNING col /*LastInsertId*/ к своему SQL, он будет представлен как LastInsertId. Обратите внимание, что вы должны пометить /*LastInsertId*/ (без учета регистра) ваш RETURNING part, чтобы позволить ora вернуть последний столбец как LastInsertId(). Этот столбец должен вписываться в int64, хотя!

...