Tenho aprendido GORM com a documentação oficial e estou tendo alguma confusão ao tentar criar registros de um mapa usando a função Create().
A documentação oficial mostra este exemplo de criação de registros a partir de um mapa:
// Single insert
db.Model(&User{}).Create(map[string]interface{}{
"Name": "jinzhu", "Age": 18,
})
// Batch insert
db.Model(&User{}).Create([]map[string]interface{}{
{"Name": "jinzhu_1", "Age": 18},
{"Name": "jinzhu_2", "Age": 20},
})
Mas aqui está a questão: isso funciona bem se não houver uma chave primária (PK) definida para a tabela. No entanto, se eu definir um campo PK (como user_id
), recebo um erro. Pelo que entendi, toda tabela precisa ter uma chave primária para normalização, então por que esse método funciona sem uma PK?
Existe algum caso de uso válido para criar registros a partir de um mapa se a tabela tiver uma PK? O GORM lida com PKs automaticamente neste caso? Ou há algo que não entendi e ele realmente não funciona com PKs?
Também estou me perguntando se o exemplo na documentação está realmente bem escrito ou se precisa de uma correção para lidar com tabelas com chaves primárias. Devo usar structs em vez de mapas ao trabalhar com tabelas que têm uma chave primária?