Bun ORMでFK制約が生成されない場合の対処法
Go
Bun
PostgreSQL
Bun ORMでbelongs-toリレーションを定義しても外部キー制約が生成されない場合がある。
原因はBunのReferences()メソッドのロジックにある:
- FK制約は
effectsM2M || nonePKの条件で生成される effectsM2M: テーブルがM2Mテーブルとしてマークされている AND 全ての参照カラムがPKnonePK: 参照カラムがPKでない
複合主キー(例:memo_idとuser_id両方にpkタグ)の場合、nonePKがfalseになりFK制約が生成されない。
解決策:
- 専用のIDカラム(
bun:",pk,autoincrement")を追加 - 他のカラムから
pkタグを削除 - これにより
nonePKがtrueになりFK制約が生成される
例: