forked from mirror/gorm
Add Composite Primary Key example
This commit is contained in:
parent
a549b6bd49
commit
b0cf9a9e4b
41
README.md
41
README.md
|
@ -1029,7 +1029,7 @@ If you have an existing database schema, and the primary key field is different
|
||||||
|
|
||||||
```go
|
```go
|
||||||
type Animal struct {
|
type Animal struct {
|
||||||
AnimalId int64 `gorm:"primary_key:yes"`
|
AnimalId int64 `gorm:"primary_key"`
|
||||||
Birthday time.Time `sql:"DEFAULT:current_timestamp"`
|
Birthday time.Time `sql:"DEFAULT:current_timestamp"`
|
||||||
Name string `sql:"default:'galeone'"`
|
Name string `sql:"default:'galeone'"`
|
||||||
Age int64
|
Age int64
|
||||||
|
@ -1040,30 +1040,21 @@ If your column names differ from the struct fields, you can specify them like th
|
||||||
|
|
||||||
```go
|
```go
|
||||||
type Animal struct {
|
type Animal struct {
|
||||||
AnimalId int64 `gorm:"column:beast_id; primary_key:yes"`
|
AnimalId int64 `gorm:"column:beast_id;primary_key"`
|
||||||
Birthday time.Time `gorm:"column:day_of_the_beast"`
|
Birthday time.Time `gorm:"column:day_of_the_beast"`
|
||||||
Age int64 `gorm:"column:age_of_the_beast"`
|
Age int64 `gorm:"column:age_of_the_beast"`
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Default values
|
## Composite Primary Key
|
||||||
|
|
||||||
If you have defined a default value in the `sql` tag (see the struct Animal above) the generated create/update SQl will ignore these fields if is set blank data.
|
|
||||||
|
|
||||||
Eg.
|
|
||||||
|
|
||||||
```go
|
```go
|
||||||
db.Create(&Animal{Age: 99, Name: ""})
|
type Product struct {
|
||||||
|
ID string `gorm:"primary_key"`
|
||||||
|
LanguageCode string `gorm:"primary_key"`
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The generated query will be:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
INSERT INTO animals("age") values('99');
|
|
||||||
```
|
|
||||||
|
|
||||||
The same thing occurs in update statements.
|
|
||||||
|
|
||||||
## Database Indexes & Foreign Key
|
## Database Indexes & Foreign Key
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
@ -1090,6 +1081,24 @@ db.Model(&User{}).AddUniqueIndex("idx_user_name_age", "name", "age")
|
||||||
db.Model(&User{}).RemoveIndex("idx_user_name")
|
db.Model(&User{}).RemoveIndex("idx_user_name")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Default values
|
||||||
|
|
||||||
|
If you have defined a default value in the `sql` tag (see the struct Animal above) the generated create/update SQl will ignore these fields if is set blank data.
|
||||||
|
|
||||||
|
Eg.
|
||||||
|
|
||||||
|
```go
|
||||||
|
db.Create(&Animal{Age: 99, Name: ""})
|
||||||
|
```
|
||||||
|
|
||||||
|
The generated query will be:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
INSERT INTO animals("age") values('99');
|
||||||
|
```
|
||||||
|
|
||||||
|
The same thing occurs in update statements.
|
||||||
|
|
||||||
## More examples with query chain
|
## More examples with query chain
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
|
Loading…
Reference in New Issue