Drizzle ORM で MySQL INSERT IGNORE 相当の動作を実現する方法
Drizzle
MySQL
TypeScript
Drizzle ORMでMySQLのINSERT IGNORE(重複時は何もしない)と同等の動作を実現する方法。
MySQLにはPostgreSQLのON CONFLICT DO NOTHINGのような構文がないため、onDuplicateKeyUpdateを使用して実現する。
実装方法:
この方法により、重複キーが存在する場合は実質的に何も更新せず、新規レコードの場合のみ挿入される。INSERT IGNOREと同等の動作となる。
他の選択肢:
- updateTmなど更新に影響のないカラムを更新
- sql.rawを使用して直接INSERT IGNORE文を実行
注意点:
- MySQLではonConflictDoNothing()は使用できない
- onDuplicateKeyUpdate()のsetには何らかのカラム指定が必須