Skip to content

Dialectごとの注意点(pg / mysql / sqlite / D1) ​

KosameはDrizzleベースであるためDBの違いまでは吸収しきれていません。 このページではそれぞれの注意点を触れていきます。

トランザクション ​

dialect内容
PostgreSQLdb.transaction()
MySQLdb.transaction()
SQLite(better-sqlite3/bun:sqlite)生SQLのBEGIN/COMMIT/ROLLBACK(ネストはSAVEPOINT)を手動発行
D1db.transaction()(D1が内部のBEGIN/COMMITを受け付けるかは未検証)

@libsql/clientは非同期ドライバなので、db.transaction()に委譲されます。詳しくはトランザクションを参照してください。

context.rawとtxContext.raw ​

dialect内容
PostgreSQL別の接続
MySQL別の接続
SQLite単一接続(txContext.rawとcontext.rawが同一オブジェクト)
D1未確認

詳しくはエスケープハッチを参照してください。

INSERT後の行の取得 ​

dialect内容
PostgreSQL.returning()
MySQL$returningId()で主キーを取って再SELECT
SQLite.returning()
D1.returning()(SQLiteと同じ)

MySQLは、主キーが無いテーブルでは、INSERT後に行を再取得できないため、add()が使えません。

deletedAtColumn()の型 ​

dialect内容
PostgreSQLtimestamp
MySQLdatetime
SQLiteinteger(timestampモード)
D1SQLiteと同じ

import ​

dialect内容
PostgreSQLkosame/pg
MySQLkosame/mysql
SQLitekosame/sqlite
D1kosame/sqlite