登录
首页 >  Golang >  Go问答

用于声明字符串默认值的 sql 结构标记语法

来源:stackoverflow

时间:2024-03-16 14:24:30 333浏览 收藏

SQL 结构标记可用于声明字符串类型的默认值。但是,在设置默认值时,是否需要用引号 ('') 括起字符串类型取决于所使用的数据库。在某些数据库中(如 MariaDB),需要使用引号,而在其他数据库(如 MySQL)中则不需要。因此,请务必参考所用数据库的文档以确定正确的语法。

问题内容

是否需要用 qoutes ('') 括起字符串类型

type car struct {
    transmission             string `gorm:"column:transmission" sql:"default:'manual'" json:"transmission"`
}
type Car struct {
    Transmission             string `gorm:"column:transmission" sql:"DEFAULT:manual" json:"transmission"`
}

在db中,data_type是enum


解决方案


您可以使用 gorm 结构标记设置默认值 - 我发现 gorm 会忽略 sql 结构标记(使用 mariadb):

type car struct {
    gorm.model
    transmission string `gorm:"default:manual"`
}

或者您可以在运行时添加一些类型检查:

type transmission string

const (
    automatic transmission = "automatic"
    manual    transmission = "manual"
)

func (t *transmission) scan(value interface{}) error {
    *t = transmission(value.([]byte))
    return nil
}

func (t transmission) value() (driver.value, error) {
    return string(t), nil
}

type car struct {
    gorm.model
    transmission transmission `gorm:"default:manual"`
}

无论哪种方式 - 我都必须直接在 mariadb 中定义枚举,它不会通过 gorm 的自动迁移函数生成枚举。

create table demo.cars (
    transmission enum('automatic', 'manual') default 'manual' not null
);

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>