Heim > Datenbank > MySQL-Tutorial > Wie kann ich ein Nicht-Primärschlüsselfeld in SQLite automatisch erhöhen?

Wie kann ich ein Nicht-Primärschlüsselfeld in SQLite automatisch erhöhen?

Barbara Streisand
Freigeben: 2024-12-27 04:13:10
Original
172 Leute haben es durchsucht

How Can I Auto-Increment a Non-Primary Key Field in SQLite?

Automatische Inkrementierung von Nicht-Primärschlüsselfeldern in SQLite

In SQLite kann es wünschenswert sein, dass ein Nicht-Primärschlüsselfeld bei jedem Einfügen automatisch inkrementiert wird. Dadurch wird ein ähnliches Verhalten wie bei der automatischen Inkrementierung von Primärschlüsseln erreicht. Dies ermöglicht die Verwaltung sequentieller Werte innerhalb einer Tabelle.

Um dies zu erreichen, kann eine Problemumgehung implementiert werden, indem die Aggregatfunktion MAX() genutzt wird. Stellen Sie sich das folgende Szenario vor: eine Protokolltabelle mit einem Primärschlüssel (id) für den internen Gebrauch und einer Revisionsnummer (rev_no), die automatisch erhöht werden muss.

CREATE TABLE Log(
  id INTEGER PRIMARY KEY,
  rev_no INT
);
Nach dem Login kopieren

Um einen neuen Protokolleintrag mit einem einzufügen Um die Revisionsnummer automatisch zu erhöhen, können wir die folgende SQL-Anweisung verwenden:

INSERT INTO Log (id, rev_no, description)
VALUES ((SELECT MAX(id) + 1 FROM Log), 'rev_Id', 'some description');
Nach dem Login kopieren

Diese Anweisung berechnet zunächst den maximalen ID-Wert in der Protokolltabelle und addiert effektiv 1 dazu Generieren der nächsten verfügbaren Revisionsnummer. Der resultierende Wert wird dann als rev_no für den neuen Protokolleintrag verwendet.

Ein alternativer Ansatz kann zum Umgang mit leeren Tabellen verwendet werden:

INSERT INTO Log (id, rev_no, description)
VALUES ((SELECT IFNULL(MAX(id), 0) + 1 FROM Log), 'rev_Id', 'some description');
Nach dem Login kopieren

Diese modifizierte Anweisung verwendet die Funktion IFNULL() um sicherzustellen, dass der maximale ID-Wert berechnet wird, auch wenn die Tabelle leer ist. Standardmäßig wird 0 zurückgegeben.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Nicht-Primärschlüsselfeld in SQLite automatisch erhöhen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage