SQLite | SQLite関数 | 接続後に変更された行の総数を取得する(total_changes関数)
total_changes()関数は、データベース接続後に追加、更新、削除された行の総数を返します。ここでは、その使い方を説明します。
直前のSQL文だけで変更された行数を取得するには、changes()を使用します。
total_changes関数の使い方
total_changes()は、現在の接続でINSERT、UPDATE、DELETEが処理した行の総数を取得します。構文は次のとおりです。
total_changes()
接続後に実際に処理されたテーブル行の累計を返します。
–
例を試すためにデータベースへ接続します。
$ sqlite3 total_changes.sqlite3
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite>
次のテーブルを作成します。
create table user (id integer, name text, address text);
sqlite> create table user (id integer, name text, address text);
sqlite>
1行を追加します。
insert into user values (1, 'devkuma', 'Seoul');
sqlite> insert into user values (1, 'devkuma', 'Seoul');
sqlite>
total_changes()でこれまでに処理された行数を取得します。
select total_changes ();
接続後に追加されたのは1行なので、total_changes()は1を返します。
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select total_changes();
total_changes()
---------------
1
sqlite>
さらに7行を追加します。
insert into user values (2, 'kimkc', 'Busan');
insert into user values (3, 'araikuma', 'Paju');
insert into user values (4, 'happykuma', 'Paju');
insert into user values (5, 'mykuma', 'Daejeon');
insert into user values (6, 'yourkuma', 'Seongnam');
insert into user values (7, 'raccoon', 'Suwon');
insert into user values (8, 'noguri', 'Suwon');
sqlite> insert into user values (2, 'kimkc', 'Busan');
sqlite> insert into user values (3, 'araikuma', 'Paju');
sqlite> insert into user values (4, 'happykuma', 'Paju');
sqlite> insert into user values (5, 'mykuma', 'Daejeon');
sqlite> insert into user values (6, 'yourkuma', 'Seongnam');
sqlite> insert into user values (7, 'raccoon', 'Suwon');
sqlite> insert into user values (8, 'noguri', 'Suwon');
sqlite>
もう一度total_changes()を呼び出します。
select total_changes();
接続後に追加された行は合計8行なので、関数は8を返します。
total_changes関数の使用(6)
sqlite> select total_changes();
total_changes()
---------------
8
sqlite>
–
次に一部の行を更新します。
update user set address = 'suwon' where address = 'Suwon';
sqlite> update user set address = 'suwon' where address = 'Suwon';
sqlite>
2行を更新したため累計は8から10になり、total_changes()は10を返します。
select total_changes();
sqlite> select total_changes();
total_changes()
---------------
10
sqlite>
このように、total_changes()で接続中にINSERT、UPDATE、DELETEが処理した行の累計を取得できます。