如果GORM中存在,则删除列

j8ag8udp  于 2023-01-10  发布在  Go
关注(0)|答案(2)|浏览(247)

参考此帮助文档,如果语法db.DropTableIfExists(&User{}, "products")存在,则存在一个删除表,但对于db.Model(&User{}).DropColumn("description"),DropColumnIfExists不存在。我应该使用什么来实现DropColumn(如果列存在,否则不存在。)

yacmzcpb

yacmzcpb1#

我应该使用什么来实现DropColumn(如果列存在,否则不存在。)
回答你的问题...
继续。您可以使用db.Model(&User{}).DropColumn("description")

func main() {
    db.AutoMigrate(&User{})

    err := db.Model(&User{}).DropColumn("description").Error
    if err != nil {
        // Do whatever you want to do!
        log.Print("ERROR: We expect the description column to be 
drop-able")
    }
}

在幕后,如果没有错误,gorm将执行原始postgresql查询,否则将返回错误。

t8e9dugd

t8e9dugd2#

截至2021年莫辛回答的更新:
我应该使用什么来实现DropColumn(如果列存在,否则不存在。)
当前版本(3.5.5)不再支持2017年的语法/API
GORM Migration Reference开始

err = db.Migrator().DropColumn(&AuthUser{}, "name")
if err != nil {
    // Do whatever you want to do!
    log.Print("ERROR: We expect the description column to be drop-able")
}

相关问题