Go使用GORM ORM套件刪除資料的方式如下。
範例環境:
- Go 1.19
- GORM 2.0 (gorm.io/gorm v1.24.2)
- PostgreSQL 14
事前要求
參考「Golang GORM PostgreSQL基本設定」設定資料庫及安裝GORM套件。
範例
GORM使用gorm.DB.Delete(value interface{}, conds ...interface{})
來刪除資料,輸入參數value
為要刪除的model,若model含有primary key值則以primary key為刪除條件。
例如下面呼叫gorm.DB.Delete
依model primary key Employee.ID
刪除。
呼叫操作後的gorm.DB.Error
可返回操作錯誤,若成功則為nil。
呼叫操作後的gorm.DB.RowsAffected
可返回刪除的筆數。
main.go
package main
import (
"fmt"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
)
type Employee struct {
ID int64 // primary key, column name is `id`
Name string // column name is `name`
Age int // column name is `age`
CreatedAt time.Time // column name is `created_at`
}
const (...)
func getGormDB() *gorm.DB {...}
func main() {
db := getGormDB()
emp := Employee{
ID: 1, // primary key
}
result := db.Delete(&Employee{}) // DELETE FROM employee WHERE id = 1
fmt.Println(result.Error) // nil
fmt.Println(result.RowsAffected) // 1
}
除了用model的primary key為修改對象的條件,也可使用gorm.DB.Where(query interface{}, args ...interface{})
設定刪除條件。
例如下面以gorm.DB.Where
設定刪除條件為employee.age < 30
。
main.go
package main
...
func main() {
db := getGormDB()
result := db.Where("age < ?", 30).Delete(&Employee{}) // DELETE FROM employee WHERE age < 30
fmt.Println(result.Error) // nil
fmt.Println(result.RowsAffected) // 1
}
沒有留言:
張貼留言