Je veux déclarer une variable dans SQLite et l'utiliser en insert
fonctionnement.
Comme dans MS SQL:
declare @name as varchar(10)
set name = 'name'
select * from table where name = @name
Par exemple, je devrai l'obtenir last_insert_row
et l'utiliser insert
.
J'ai trouvé quelque chose sur la reliure mais je ne l'ai pas vraiment bien compris.
sql
sqlite
variables
declaration
Muhammad Nour
la source
la source
Réponses:
SQLite ne prend pas en charge la syntaxe de variable native, mais vous pouvez obtenir pratiquement la même chose en utilisant une table temporaire en mémoire.
J'ai utilisé l'approche ci-dessous pour les grands projets et fonctionne comme un charme.
la source
PRAGMA temp_store
paramètre. En fait, selon la documentation en ligne , le paramètre par défaut est de stocker temporairement les fichiers sur le disque (qui comprend les fichiers pour les tables temporaires et les index).La solution d'Herman fonctionne, mais elle peut être simplifiée car Sqlite permet de stocker n'importe quel type de valeur sur n'importe quel champ.
Voici une version plus simple qui utilise un
Value
champ déclaré commeTEXT
pour stocker n'importe quelle valeur:la source
Pour une variable en lecture seule (c'est-à-dire une valeur constante définie une fois et utilisée n'importe où dans la requête), utilisez une expression de table commune (CTE).
Clause SQLite WITH
la source
La solution d'Herman a fonctionné pour moi, mais cela
...
m'a un peu mélangé. J'inclus la démo que j'ai élaborée en fonction de sa réponse. Les fonctionnalités supplémentaires de ma réponse incluent la prise en charge des clés étrangères, les clés à incrémentation automatique et l'utilisation de lalast_insert_rowid()
fonction pour obtenir la dernière clé générée automatiquement dans une transaction.Mon besoin de ces informations est apparu lorsque j'ai frappé une transaction qui nécessitait trois clés étrangères, mais je ne pouvais obtenir que la dernière avec
last_insert_rowid()
.la source
Essayez d'utiliser des valeurs de liaison. Vous ne pouvez pas utiliser de variables comme vous le faites dans T-SQL mais vous pouvez utiliser des "paramètres". J'espère que le lien suivant est utile. Valeurs de liaison
la source