AnswerDotAI / AnswerDotAI/sqlite-minutils

`select last_insert_rowid()` doesn't account for ROLLBACK on transaction

Offen
#22 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
17
Forks
9
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

We probably don't want to use the SQLIte function `last_insert_rowid()` to get the last_pk. Per the docs on [last_insert_rowid](https://www.sqlite.org/c3ref/last_insert_rowid.html), this is expected behavior:

> For the purposes of this routine, an [INSERT](https://www.sqlite.org/lang_insert.html) is considered to be successful even if it is subsequently rolled back.

---

Get last rowid

```sql
SELECT last_insert_rowid();
```

`0`

Now do the transaction and check the row id:

```sql
BEGIN TRANSACTION;
INSERT INTO users (username) VALUES ('puppy');
SELECT last_insert_rowid();
```

`1`

Roll the transaction back and check the table and rowid:

```sql
ROLLBACK;
SELECT last_insert_rowid();
```

`1`

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Keine Datei im Repository und kein Test werden genannt. Beginne damit, die im Issue gezeigte Transaktion zu reproduzieren, und lies die SQLite-Dokumentation zu last_insert_rowid; erledigt ist die Aufgabe, wenn ein zurückgerolltes insert die Bibliothek nicht mehr dazu veranlasst, diese rowid als letzten Primärschlüssel zu melden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python, sqlite
Bereich
database
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.