diff --git a/plume-models/src/lib.rs b/plume-models/src/lib.rs index 546d5997..4f3ef6bc 100644 --- a/plume-models/src/lib.rs +++ b/plume-models/src/lib.rs @@ -261,13 +261,16 @@ macro_rules! insert { #[allow(dead_code)] pub fn insert(conn: &crate::Connection, new: $from) -> Result { - diesel::insert_into($table::table) - .values(new) - .execute(conn)?; - #[allow(unused_mut)] - let mut $val = Self::last(conn)?; - let $conn = conn; - $( $after )+ + use diesel::connection::Connection as _; + conn.transaction::<_, Error, _>(|| { + diesel::insert_into($table::table) + .values(new) + .execute(conn)?; + #[allow(unused_mut)] + let mut $val = Self::last(conn)?; + let $conn = conn; + $( $after )+ + }) } }; }