package main import ( "fmt" "gorm.io/driver/sqlite" "gorm.io/gorm" ) //type User struct { // ID uint `gorm:"primaryKey"` // Name string `gorm:"size:100"` // Email string `gorm:"size:100;unique"` // Age int // DeletedAt gorm.DeletedAt `gorm:"index"` // 软删除字段 //} func main() { db, _ := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) db.AutoMigrate(&User{}) //// 插入测试数据 //users := []User{ // {Name: "Alice", Email: "alice@example.com", Age: 30}, // {Name: "Bob", Email: "bob@example.com", Age: 25}, // {Name: "Charlie", Email: "charlie@example.com", Age: 35}, //} //db.Create(users) // 1. 软删除(标记 deleted_at) db.Delete(&User{}, 11) // 删除 ID=1 的用户 fmt.Println("Soft deleted user ID=1") // 2. 查询时默认不包括已删除的 var activeUsers []User db.Find(&activeUsers) fmt.Printf("Active users: %d\n", len(activeUsers)) // 3. 查询所有记录(包括已删除的) var allUsers []User db.Unscoped().Find(&allUsers) fmt.Printf("All users (including deleted): %d\n", len(allUsers)) // 4. 永久删除(硬删除) db.Unscoped().Delete(&User{}, 12) fmt.Println("Permanently deleted user ID=2") // 5. 批量删除 db.Where("age < ?", 30).Delete(&User{}) fmt.Println("Batch delete completed") // 最终统计 var finalCount int64 db.Model(&User{}).Count(&finalCount) fmt.Printf("Final active users: %d\n", finalCount) }