Add Composite Primary Key example

This commit is contained in:
Jinzhu 2015-03-11 17:40:54 +08:00
parent a549b6bd49
commit b0cf9a9e4b
1 changed files with 25 additions and 16 deletions

View File

@ -1029,7 +1029,7 @@ If you have an existing database schema, and the primary key field is different
```go
type Animal struct {
AnimalId int64 `gorm:"primary_key:yes"`
AnimalId int64 `gorm:"primary_key"`
Birthday time.Time `sql:"DEFAULT:current_timestamp"`
Name string `sql:"default:'galeone'"`
Age int64
@ -1040,30 +1040,21 @@ If your column names differ from the struct fields, you can specify them like th
```go
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"`
Age int64 `gorm:"column:age_of_the_beast"`
}
```
## 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.
## Composite Primary Key
```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
```go
@ -1090,6 +1081,24 @@ db.Model(&User{}).AddUniqueIndex("idx_user_name_age", "name", "age")
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
```go