2013-07-09 2 views
0

매우 큰 데이터베이스에서 행 수를 계속 실행해야합니다. Row Count는 내 프로그램에서 Count (*)를 실행하는 것이 너무 느려서 너무 느려서 SQLite에서이 문제를 해결하기 위해 실행 횟수를 계속 유지합니다.Sqlite 트리거 영향을받는 행 수

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

그래서 여기에서 나는 행 (NumberOfSamples)의 현재 수를 가지고 삽입에 의해 영향을받은 행 수와 함께 증가 (DELETE로 변하고와 동일 할)하고 싶다. Sqlite의 C API에서이 작업은 Sqlite3_Changes()로 수행됩니다. 그러나이 스크립트에서는이 함수를 사용할 수 없습니다. 주위를 둘러 보았고 일부가 SELECT Count (*) from Inserted를 사용하고있는 것을 보았습니다. 그러나 Sqlite가이를 지원한다고 생각하지 않습니다.

Sqlite가 INSERT 및 DELETE 쿼리의 영향을받은 행의 양을 보유한다는 것을 인식합니까?

답변

1

SQLite는이 changes() SQL function이 있지만 sqlite3_changes() API 함수처럼, 그것은 마지막 완료 문의 행의 수를보고합니다. 트리거 실행 중 트리거하는 문이 아직 완료되지 않았습니다.

FOR EACH ROW 트리거를 사용하고 각 행에 1을 추가하십시오.

+0

정확하게 내가 무엇을 찾고 있었는지, 그 페이지를 읽고 어떻게 든 간과 한 것은 처음입니다. 감사 –