【发布时间】:2019-08-04 00:17:39
【问题描述】:
根据Go Database SQL,它说使用Exec 来修改数据,而Query 不好,因为底层连接一直保持打开状态,直到调用Rows.Close()。但是,我可以想到两种情况,询问正确的模式是什么。
1) 使用sql.Tx 进行多次更新,这将保持连接直到Tx.Rollback 或Tx.Commit。在这种情况下会重要吗?
2) 在更新、插入或删除时返回数据(尤其是在使用非基于整数的行 ID,如 UUID 时)。在这种情况下,QueryRow 似乎是合适的,特别是因为它返回的Row 没有Close,只有Scan。但是,可以打开 Tx 进行写入,然后立即读取,但这通常是很多额外的工作。
这两种情况我是否遗漏了什么?
我正在使用 Postgres,但从我所阅读的有关 Go 的 DB 集成的内容来看,在大多数情况下,数据库实现应该无关紧要。
【问题讨论】:
-
我读过这个问题,但它并没有真正回答我的问题或解决我的问题:stackoverflow.com/questions/50664648/…
-
不是一个 Go 程序员,但看起来文档只是说查询返回一个对象,您需要使用(关闭)做某事并且永远不要忽略......没有具体说明为什么要在查询实际上很糟糕。