2013-07-09 5 views
0

Vous devez continuer à compter nombre de lignes dans une très grande base de données. Le nombre de lignes est nécessaire assez de fois dans mon programme pour que le compte courant (*) soit trop lent, donc je continuerai juste à compter le compte pour le contourner dans SQLITE.Sqlite Trigger Nombre de lignes affectées

CREATE TRIGGER RowCountUpdate AFTER INSERT ON LastSample 
     BEGIN 
     UPDATE BufferControl SET NumberOfSamples = NumberOfSamples + 
     (SELECT Count(*) FROM Inserted); 
     END; 

donc d'ici que je veux prendre le nombre actuel de lignes (NumberOfSamples) et incrémenter avec le nombre de lignes ont été affectées par l'insert (faire de même avec SUPPRIMER et décrémentation). Dans l'API C de Sqlite, ceci est fait avec Sqlite3_Changes(). Cependant, je ne peux pas utiliser cette fonction ici dans ce script. J'ai regardé autour et j'ai vu que certains utilisaient SELECT Count (*) FROM Inserted, mais je ne pense pas que Sqlite le supporte.

Existe-t-il une instruction reconnue par Sqlite qui contient la quantité de lignes affectées par les requêtes INSERT et DELETE?

Répondre

1

SQLite a le changes() SQL function, mais comme la fonction API sqlite3_changes(), il indique le nombre de lignes de la dernière déclaration terminée. Lors de l'exécution du déclencheur, l'instruction de déclenchement n'est pas encore terminée. Utilisez un déclencheur FOR EACH ROW et ajoutez 1 pour chaque ligne.

+0

Exactement ce que je cherchais, lire cette page et d'une manière ou d'une autre l'a ignoré la première fois. Merci –

Questions connexes