go - 为什么从数据库中删除一些数据后它没有插入到同一个表中

标签 go

我遇到了一个奇怪的问题,从一个表中删除数据后无法再次插入到表中。

举个例子

我正在使用 postgres 数据库

_, err = con.Query(`
    DELETE FROM loan_aims WHERE _loan = $1;
`, input.ID)
if err != nil {
    tx.Rollback()
    log.Println(err)
    return false, fmt.Errorf("can not delete additional data from loan_aims")
}

   stmtAim, err := con.Prepare(`INSERT INTO loan_aims(_loan,_aim) VALUES ($1,$2)`)
if err != nil {
    tx.Rollback()
    log.Println(err)
    return false, fmt.Errorf("can not insert into loan_aims")
}

 for i := 0; i < len(aims); i++ {
    _, err := stmtAim.Exec(loanID, aims[i])

    if err != nil {
        tx.Rollback()
        return false, fmt.Errorf("can not insert aim 2")
    }
} 

我已经尝试删除它

_, err = con.Query(`
    DELETE FROM loan_aims WHERE _loan = $1;
`, input.ID)
if err != nil {
    tx.Rollback()
    log.Println(err)
    return false, fmt.Errorf("can not delete additional data from loan_aims")
}

它工作得很好

最佳答案

通常,您应该使用 db.Exec() 进行 DELETE

_, err = db.Exec("delete from foo")
if err != nil {
    log.Fatal(err)
}

关于go - 为什么从数据库中删除一些数据后它没有插入到同一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604267/

相关文章:

Google Cloud Container Builder - 使用 vendor 的依赖项从 Go 源代码构建 Docker 容器

Golang 与 couchbase 集成问题

go - 我如何强制除法在 Go 中成为 float ?

go - 使用 JSON-RPC 调用传递身份验证详细信息

go - 如何使用命令行在 linux 中使用 ffmpeg 将两个 wav 拼接在一起?

javascript - Go lang 执行 javascript 以检索页面中的文本

sqlite - Beego raw sql - 类型转换问题

unit-testing - Gomega 的 Equal() 可以处理多个值吗?

sql - Go 中的 Postgres 列表参数(使用 database/sql 和 pq)

interface - 在 Go 中的结构中使用接口(interface)