details:   https://code.tryton.org/tryton/commit/e277a4c8d43b
branch:    default
user:      Cédric Krier <[email protected]>
date:      Sat Dec 13 14:31:19 2025 +0100
description:
        Implement setnextid for SQLite database
diffstat:

 trytond/trytond/backend/sqlite/database.py |  19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diffs (29 lines):

diff -r aa1bb0828ed1 -r e277a4c8d43b trytond/trytond/backend/sqlite/database.py
--- a/trytond/trytond/backend/sqlite/database.py        Sat Dec 13 12:56:46 
2025 +0100
+++ b/trytond/trytond/backend/sqlite/database.py        Sat Dec 13 14:31:19 
2025 +0100
@@ -717,6 +717,25 @@
                     return False
         return True
 
+    def setnextid(self, connection, table, value):
+        cursor = connection.cursor()
+        sequence = Table('sqlite_sequence')
+        cursor.execute(*sequence.select(
+                sequence.seq,
+                where=sequence.name == table))
+        rows = cursor.fetchall()
+        if rows:
+            if rows[0][0] >= value:
+                return
+            cursor.execute(*sequence.update(
+                    [sequence.seq],
+                    [value - 1],
+                    where=sequence.name == table))
+        else:
+            cursor.execute(*sequence.insert(
+                    [sequence.name, sequence.seq],
+                    [[table, value - 1]]))
+
     def lastid(self, cursor):
         # This call is not thread safe
         return cursor.lastrowid

Reply via email to