Ich möchte eine Variable in SQLite deklarieren und im insert
Betrieb verwenden.
Wie in MS SQL:
declare @name as varchar(10)
set name = 'name'
select * from table where name = @name
Zum Beispiel muss ich es bekommen last_insert_row
und verwenden in insert
.
Ich habe etwas über das Binden gefunden, aber ich habe es nicht wirklich verstanden.
sql
sqlite
variables
declaration
Muhammad Nour
quelle
quelle
Antworten:
SQLite unterstützt keine native Variablensyntax, aber Sie können praktisch dasselbe mit einer temporären Tabelle im Speicher erreichen.
Ich habe den folgenden Ansatz für große Projekte verwendet und funktioniert wie ein Zauber.
quelle
PRAGMA temp_store
Einstellung ab. Laut Online-Dokumenten besteht die Standardeinstellung darin, temporäre Dateien auf der Festplatte zu speichern (einschließlich Dateien für temporäre Tabellen und Indizes).Hermans Lösung funktioniert, kann aber vereinfacht werden, da mit Sqlite jeder Werttyp in jedem Feld gespeichert werden kann.
Hier ist eine einfachere Version, die ein
Value
Feld verwendet, dasTEXT
zum Speichern eines beliebigen Werts deklariert ist:quelle
Verwenden Sie für eine schreibgeschützte Variable (dh einen einmal festgelegten Konstantenwert, der an einer beliebigen Stelle in der Abfrage verwendet wird) einen Common Table Expression (CTE).
SQLite WITH-Klausel
quelle
Hermans Lösung hat bei mir funktioniert, aber das
...
hat mich ein bisschen durcheinander gebracht. Ich füge die Demo hinzu, die ich basierend auf seiner Antwort ausgearbeitet habe. Zu den zusätzlichen Funktionen in meiner Antwort gehören die Unterstützung von Fremdschlüsseln, das automatische Inkrementieren von Schlüsseln und die Verwendung derlast_insert_rowid()
Funktion zum Abrufen des letzten automatisch generierten Schlüssels in einer Transaktion.Mein Bedarf an diesen Informationen kam auf, als ich eine Transaktion traf, für die drei Fremdschlüssel erforderlich waren, aber ich konnte nur den letzten mit erhalten
last_insert_rowid()
.quelle
Versuchen Sie es mit Bindungswerten. Sie können keine Variablen wie in T-SQL verwenden, aber Sie können "Parameter" verwenden. Ich hoffe der folgende Link ist nützlich. Bindungswerte
quelle