Open5

SQLx の query! と query_as! の使い分け

山とコード山とコード

macro を使いたい

マクロの場合、コンパイル時にフィールドの有無や型のチェックがおこなわれる。
なので、基本的にはマクロで良いと思う。

query_as では返り値の型を指定できるが、query ではできない。

山とコード山とコード

query! vs query_as!

SELECT の取得系の SQL では query_as! が返り値の型指定できるから便利。

INSERT、UPDATE、DELETE などの更新系のSQLの場合、execute() のある query! しか使えない。

ただし、RETURNING 句を使う場合は fetch_one() が使えるので query_as! が良さげ。