gorm create时 id为空
时间: 2023-08-04 08:21:00 浏览: 56
如果在使用 GORM 的 `Create` 方法创建数据时,没有设置主键 `ID` 的值,那么 GORM 会根据数据库的设置或者默认规则生成主键的值,例如自增或者 UUID 等。如果你的数据库设置了自增主键,你可以在创建数据时不设置主键 `ID` 的值,例如:
```go
user := User{
Name: "Alice",
Age: 18,
}
db.Create(&user)
```
这样,GORM 会自动将主键值设置为下一个可用的自增值。如果你的数据库没有设置自增主键,或者你想手动指定主键值,可以在创建数据时设置主键 `ID` 的值,例如:
```go
user := User{
ID: 1001,
Name: "Alice",
Age: 18,
}
db.Create(&user)
```
这样,GORM 会将主键值设置为 1001。如果手动指定的主键值已经存在于数据库中,则会报错。
相关问题
gorm create时 id
在 GORM 的模型中,如果字段名为 "ID",则默认会作为主键。在使用 `Create` 方法创建数据时,如果没有指定主键的值,GORM 会自动生成一个唯一的 UUID 作为主键。如果你想手动指定主键的值,可以在创建时设置 ID 字段的值,例如:
```go
user := User{
ID: 1001,
Name: "Alice",
Age: 18,
}
db.Create(&user)
```
这样就会创建一个 ID 为 1001 的用户。但需要注意的是,如果手动指定的主键值已经存在于数据库中,则会报错。
gorm 创建并返回id
使用 GORM 创建并返回 id 的方式有两种,分别是:
1. 使用 `Create` 方法
```go
type User struct {
Name string
Age int
}
var user User
user.Name = "John"
user.Age = 30
result := db.Create(&user)
if result.Error != nil {
// 创建失败
} else {
// 创建成功
// 获取插入的记录的 ID
id := user.ID
}
```
2. 使用 `NewRecord` 和 `Save` 方法
```go
type User struct {
Name string
Age int
}
var user User
user.Name = "John"
user.Age = 30
// 判断是否为新记录
if db.NewRecord(&user) {
// 创建新记录
result := db.Save(&user)
if result.Error != nil {
// 创建失败
} else {
// 创建成功
// 获取插入的记录的 ID
id := user.ID
}
} else {
// 记录已存在
}
```
注意:使用 GORM 创建记录时,如果结构体中定义了主键,会优先使用主键作为插入数据的依据。如果没有定义主键,则会自动生成一个名为 `ID` 的字段作为主键。