gormでcomposite primary keyを使いたいのだが
なんかこうするっぽい
type Foo struct { Bar string `gorm:"primary_key"` Baz int `gorm:"primary_key"` }
で、gorm.DBのAutoMigrateかCreateTableを叩けばいいわけで、LogMode(true)で発行されてるSQLを確認すると
CREATE TABLE "foos" ( "bar" varchar(255), "baz" serial, PRIMARY KEY (bar,baz) )
だいたいあってるんだけど、baz
がserial
だとダメなんですけどそれは
原因究明
- SERIALでgrep
- postgresだし、ここっぽい
- SqlTagを叩いてるのはここ
- Typeがないばあい入ってる
修正した
type Foo struct { Bar string `gorm:"primary_key"` - Baz int `gorm:"primary_key"` + Baz int `gorm:"primary_key" sql:"TYPE:int"` }
そしたら
CREATE TABLE "foos" ( "bar" varchar(255), "baz" int, PRIMARY KEY (bar,baz) )
ほしいSQLになった
DRY