【发布时间】:2015-02-25 22:38:30
【问题描述】:
我有一个现有的 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 和 database/sql 在创建新的 User 实例时调用 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()?
【问题讨论】: