From 95356ac403cb1c156351b22b522ba111a29155a0 Mon Sep 17 00:00:00 2001 From: brookechen Date: Tue, 16 May 2023 19:17:42 +0800 Subject: [PATCH] =?UTF-8?q?AutoIncrement=E5=88=97=E5=B8=A6ID=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E6=8D=AE=E6=97=B6=E6=B2=A1=E6=9C=89Commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 业务场景中,需要预留(1 ~ 100)的ID给系统规则使用。所以会先使用插入将AutoIncrement列的id偏移到一个特定的值(如:100),然后“带ID调用Insert插入系统规则”。 当带ID插入时,由于没有commit,会被rollback掉。 --- session_insert.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/session_insert.go b/session_insert.go index fc025613..c97322b1 100644 --- a/session_insert.go +++ b/session_insert.go @@ -348,20 +348,20 @@ func (session *Session) insertStruct(bean interface{}) (int64, error) { newArgs = args } - if id == 0 { - err := session.queryRow(sql, newArgs...).Scan(&id) - if err != nil { - return 0, err - } - if needCommit { - if err := session.Commit(); err != nil { - return 0, err - } - } - if id == 0 { - return 0, errors.New("insert successfully but not returned id") - } - } + if id == 0 { + err := session.queryRow(sql, newArgs...).Scan(&id) + if err != nil { + return 0, err + } + } + if needCommit { + if err := session.Commit(); err != nil { + return 0, err + } + } + if id == 0 { + return 0, errors.New("insert successfully but not returned id") + } defer handleAfterInsertProcessorFunc(bean)