我有一个现有的 mysql 表,它使用 mysql 的UUID_SHORT()函数来生成唯一的 ID。该表的简化版本:
CREATE TABLE `users` (
`user_uuid` bigint(20) unsigned NOT NULL,
`user_name` varchar(64) NOT NULL
);
并且将通过以下方式创建一个新用户:
INSERT INTO users (user_uuid, user_name) values (UUID_SHORT(), "new user name");
我开始使用gorm实现 DBs 模型,并且我在创建用户的新实例时如何告诉 gorm 和数据库/sql 调用 UUID_SHORT() 空白。
来自模型/users.go:
package model
type User struct {
UserUUID uint64 `gorm:"column:user_uuid;primary_key:yes";sql:"notnull;default:uuid_short"`
UserName string `sql:"notnull"`
}
func (user User) TableName() string {
return "users"
}
来自模型/users_test.go:
package model_test
import (
"testing"
".../model"
".../model/testutil"
)
func TestUserCreate(t *testing.T) {
user := model.User{
// UserUUID: **HOW DO I CALL UUID_SHORT() HERE?**,
UserName: "Go Test",
}
// testutil.DB is the successful result of gorm.Open("mysql", ...)
testutil.DB.Create(&user)
}
保存实例时,如何为 user_uuid 列调用 UUID_SHORT()?
相关分类