test:on duplicate update
This commit is contained in:
		
							parent
							
								
									a9d27293de
								
							
						
					
					
						commit
						e3fff64cec
					
				
							
								
								
									
										41
									
								
								tests/duplicate_scan_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								tests/duplicate_scan_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| package tests_test | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"gorm.io/gorm" | ||||
| 	"gorm.io/gorm/clause" | ||||
| 	"testing" | ||||
| ) | ||||
| 
 | ||||
| type ProductD struct { | ||||
| 	*gorm.Model | ||||
| 	ID    int64  `json:"id" gorm:"id"` | ||||
| 	Code  string `json:"code" gorm:"type:varchar(20);uniqueIndex:idx_code"` // 指定类型为varchar(20),创建唯一索引
 | ||||
| 	Price int64  `json:"price" gorm:"price"` | ||||
| } | ||||
| 
 | ||||
| // TableName 表名称
 | ||||
| func (*ProductD) TableName() string { | ||||
| 	return "products" | ||||
| } | ||||
| 
 | ||||
| func (*ProductD) Name() string { | ||||
| 	return "products_d" | ||||
| } | ||||
| 
 | ||||
| func TestDuplicateScan(t *testing.T) { | ||||
| 	DB.AutoMigrate(&ProductD{}) | ||||
| 	DB.Create(&ProductD{Code: "D41", Price: 100}) | ||||
| 	DB.Create(&ProductD{Code: "D42", Price: 100}) | ||||
| 	// Migrate the schema
 | ||||
| 	dst := &ProductD{ | ||||
| 		Code:  "D42", | ||||
| 		Price: 0, | ||||
| 	} | ||||
| 	tx := DB.Begin() | ||||
| 	tx = tx.Table(dst.Name()).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "code"}}, DoUpdates: clause.Assignments(map[string]interface{}{"price": gorm.Expr("price + ?", dst.Price)})}).Create(dst) | ||||
| 	p := new(Product) | ||||
| 	tx.Debug().Scan(&p) | ||||
| 	fmt.Printf("tx scan ||%+v\n", p) | ||||
| 	tx.Commit() | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 jinhui.zhou
						jinhui.zhou