From 4175aa93bd30356074c943ed68448f51e18ce40a Mon Sep 17 00:00:00 2001 From: Yiu Tin Cheung Ivan Date: Wed, 12 Jul 2023 16:01:53 +0800 Subject: [PATCH] on conflict do nothing SeaQL/sea-orm#1712 --- SeaORM/docs/0.12.x-CHANGELOG_temp.md | 2 +- SeaORM/docs/05-basic-crud/03-insert.md | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/SeaORM/docs/0.12.x-CHANGELOG_temp.md b/SeaORM/docs/0.12.x-CHANGELOG_temp.md index 2a4c72865a..910d288e9d 100644 --- a/SeaORM/docs/0.12.x-CHANGELOG_temp.md +++ b/SeaORM/docs/0.12.x-CHANGELOG_temp.md @@ -304,7 +304,6 @@ let res = Bakery::insert_many(std::iter::empty()) assert!(matches!(res, Ok(TryInsertResult::Empty))); ``` -================================ All Changes above was being Documented ================================ * On conflict do nothing not resulting in Err https://github.com/SeaQL/sea-orm/pull/1712 ```rust let on = OnConflict::column(Column::Id).do_nothing().to_owned(); @@ -317,6 +316,7 @@ assert!(matches!(res, Err(DbErr::RecordNotInserted))); let res = Entity::insert_many([..]).on_conflict(on).do_nothing().exec(db).await; assert!(matches!(res, Ok(TryInsertResult::Conflicted))); ``` +================================ All Changes above was being Documented ================================ ### Upgrades diff --git a/SeaORM/docs/05-basic-crud/03-insert.md b/SeaORM/docs/05-basic-crud/03-insert.md index 97a8c91ae9..b96179834c 100644 --- a/SeaORM/docs/05-basic-crud/03-insert.md +++ b/SeaORM/docs/05-basic-crud/03-insert.md @@ -286,3 +286,17 @@ let res = Entity::insert_many([ assert_eq!(res.err(), Some(DbErr::RecordNotInserted)); ``` + +Or you can use `.do_nothing()` to return safely instead. + +```rust +let on = OnConflict::column(Column::Id).do_nothing().to_owned(); + +// Existing behaviour +let res = Entity::insert_many([..]).on_conflict(on).exec(db).await; +assert!(matches!(res, Err(DbErr::RecordNotInserted))); + +// you can also: +let res = Entity::insert_many([..]).on_conflict(on).do_nothing().exec(db).await; +assert!(matches!(res, Ok(TryInsertResult::Conflicted))); +``` \ No newline at end of file