如何检查DB中是否存在该值



如何检查要插入的值是否存在于数据库中

假设我有


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
}
}

相关内容

  • 没有找到相关文章

最新更新