Behelyezése tömb egy PostgreSQL adatbázis a Golang

szavazat
10

Azt akarom, hogy tud írni egy sor bigints egy táblázatot, hogy én vagyok a történelem a Go. Sajnos, nem tudok, és ha én ezt a hibát sql: converting Exec argument #1's type: unsupported type []int64, a slicedob. Itt van, amit csinálok, szerkesztette a rövidség kedvéért:

type Card struct {
    cid int64
}

type Transaction struct {
        tid, cardid int64
        productids []int64
        salepoint int
        cardkey string
}

func logPurchase(card *Card, t *Transaction) {
     _, err := db.Exec(INSERT IGNORE  INTO history VALUES ($1, $2, $3, $4), rand.Int63(), t.productids, card.cid, t.salepoint);
}

Ez a szerkezet a táblázat, amit szeretnék beilleszteni: tid bigint primary key, productids bigint[] not null, cardid bigint not null, salepoint int

A kérdést 03/11/2014 01:55
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
6

Végre adatbázis / sql / driver.Valuer egy egyedi típus:

type int64array []int64

func (a int64array) Value() (driver.Value, error) {
    // Format a in PostgreSQL's array input format {1,2,3} and return it as as string or []byte.
}
Válaszolt 03/11/2014 15:19
a forrás felhasználó

szavazat
8

A tömbök támogatottak github.com/lib/pq, mivel 2016 augusztus 6. OP nyilatkozata lehetne írni:

_, err := db.Exec(
    "INSERT IGNORE  INTO history VALUES ($1, $2, $3, $4)", 
    rand.Int63(), 
    pq.Array(t.productids),   // <------- 
    card.cid, 
    t.salepoint,
)
Válaszolt 26/12/2016 23:21
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more