v1.0.176: FOR UPDATE fix — ORDER BY LIMIT 1 вместо MAX()
This commit is contained in:
@@ -17,10 +17,11 @@ def get_next_seq(contract_id):
|
|||||||
conn.autocommit = False
|
conn.autocommit = False
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
cur.execute(
|
cur.execute(
|
||||||
"SELECT COALESCE(MAX(seq), 0) + 1 FROM spec_events WHERE contract_id = %s FOR UPDATE",
|
"SELECT seq FROM spec_events WHERE contract_id = %s ORDER BY seq DESC LIMIT 1 FOR UPDATE",
|
||||||
(contract_id,),
|
(contract_id,),
|
||||||
)
|
)
|
||||||
seq = cur.fetchone()[0]
|
row = cur.fetchone()
|
||||||
|
seq = (row[0] + 1) if row else 1
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return seq
|
return seq
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
Reference in New Issue
Block a user