GORM Playground Link

https://github.com/go-gorm/playground/pull/705

Description

betch save Conflict by uniqueIndex, id err

CREATE TABLE `users` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_users_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;

INSERT INTO `users` (`id`, `name`)
VALUES
    (1,'user1'),
    (2,'user2');

type User struct {
    ID   uint   `gorm:"primarykey" json:"id"`
    Name string `gorm:"uniqueIndex;size:100" json:"name"`
}

user1 := User{
        Name: "user2",
    }
    user2 := User{
        Name: "user3",
    }
    users := []User{user1, user2}

    db.Debug().Save(users)
    fmt.Println(users[0].ID, users[1].ID)

output

3 4

except

2 3

mysql data

id     name
---
1   user1
2   user2
3   user3