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