如何检查要插入的值是否存在于数据库中
假设我有
type studentRepository struct {
db *gorm.DB
}
type Student struct {
Name string `json:"name"`
Age int `json:"age"`
}
func(s student) CreateStudent(v Student) (*Student, error) {
db := p.db.Create(&v)
return &v, db.Error
}
我想创建一个新学生,但不能与其他学生同名。如何检查数据库中是否不存在要插入的名称?
Example:
StudentList = {Messi, Ronaldo, Tevez}
WantToInsert = {Ronaldo}
Result = Cannot happened because Ronaldo is existing on the list
您可以通过创建"独特的";SQL数据库中的约束,Gorm允许在结构中添加唯一的关键字:
type Student struct {
Name string `json:"name" gorm:"unique"`
Age int `json:"age"`
}
有关更多详细信息,您可以参考Gorm的文档:Gorm索引文档
您还可以捕获重复的错误以进行日志记录实现方式因您使用的数据库而异,这个例子适用于使用Postgresql:的情况
err := db.Create(student).Error
if err != nil {
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) && (pgErr.Code == "23505") {
// handle error here
}
}