86 votes

Comment faire SI PAS EXISTE dans SQLite

J'essaie de porter cette ligne de MS SQL Server vers SQLite

 IF NOT EXISTS(SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received') 
    INSERT INTO EVENTTYPE (EventTypeName) VALUES ('ANI Received');
 

Il semble que SQLite ne supporte pas IF NOT EXISTS ou du moins, je ne peux pas le faire fonctionner. Est-ce que je manque quelque chose de simple? Y at-il un travail autour?

130voto

beach Points 4116

Que dis-tu de ça?

 INSERT OR IGNORE INTO EVENTTYPE (EventTypeName) VALUES 'ANI Received'
 

(Non testé car je n'ai pas SQLite ... cependant ce lien est assez descriptif.)

De plus, cela devrait également fonctionner:

 INSERT INTO EVENTTYPE (EventTypeName)
SELECT 'ANI Received'
WHERE NOT EXISTS (SELECT 1 FROM EVENTTYPE WHERE EventTypeName = 'ANI Received');
 

20voto

TheDean Points 9

Si vous voulez ignorer l'Insertion de la Valeur existante , il doit y avoir une Clé de Champ dans votre Table .

Il suffit de Créer une table Avec Un Champ de Clé Primaire Comme

CREATE TABLE IF NOT EXISTS TblUsers (UserId INTEGER PRIMARY KEY, UserName varchar(100), ContactName varchar(100),Password varchar(100));

Et Puis d'Insérer Ou de Remplacer Ou d'Ignorer la Requête sur la Table Comme

INSERT OR REPLACE INTO TblUsers (UserId, UserName, ContactName ,Password) VALUES('1','UserName','ContactName','Password');

Il ne Sera Pas Re-Entrez Le mot de Valeur de clé Primaire ...

C'Est comment U peut Vérifier Si une Valeur existe dans la table ou pas

Merci

1voto

ilber Points 38

Vous pouvez également définir une Contrainte sur une Table avec les champs de la CLÉ et de régler les Conflits "Ignorer"

Lorsqu'une violation de contrainte se produit, l'IGNORER résolution algorithme saute une ligne qui contient la violation de contrainte et continue le traitement ultérieur des lignes de l'instruction SQL comme si rien ne s'est mal passé. D'autres lignes avant et après la ligne qui contenait la violation de contrainte sont insérées ou mises à jour normalement. Aucune erreur n'est retourné lorsque l'IGNORER résolution des conflits algorithme est utilisé.

SQLite Documentation

-13voto

diexsie Points 91

Il existe et fonctionne bien:

 query.SQL.Add('CREATE TABLE IF NOT EXISTS "patients" ( ' +
           '"id" INTEGER PRIMARY KEY AUTOINCREMENT,' +
           '"vorname" TEXT,' +
           '"name" TEXT,' +
           '"geburtsdatum" TEXT,' +
           '"suchid" TEXT )');
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X