直近に実行されたSQL文により更新/削除/追加された行数を取得(changes関数)

changes 関数を使うと、直近に実行された SQL 文による更新や削除された行数を取得することができます。ここでは SQLite における changes 関数の使い方について解説します。

なおデータベース接続後に SQL 文による更新や削除された行数のトータルを取得するには「データベース接続後に実行されたSQL文により更新/削除/追加された行数のトータルを取得(total_changes関数)」を参照してください。

(Last modified: )

changes関数の使い方

changes 関数は直近の SQL 文が行の追加/削除/更新を行った場合に処理された行数を取得するために使用します。書式は次の通りです。

changes()

INSERT 文、 UPDATE 文、 DELETE 文によってテーブルの行に対する処理が行われた時、実際に処理された行数を返します。

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table staff(id integer, name text, address text);

changes関数の使い方(1)

INSERT 文を使って次のようなデータを格納してあります。

insert into staff values(1, 'Yamada', 'Tokyo');
insert into staff values(2, 'Suzuki', 'osaka');
insert into staff values(3, 'Endou', 'Tokyo');
insert into staff values(4, 'Honda', 'Nagoya');
insert into staff values(5, 'Nishi', 'osaka');
insert into staff values(6, 'Harada', 'Tokyo');
insert into staff values(7, 'Egawa', 'Nagoya');

changes関数の使い方(2)

INSERT 文を実行したので changes 関数を使って直近で処理された行数を取得してみます。

select changes();

INSERT 文は数回実行していますが、直近のものはデータを 1 つ追加しただけなので changes 関数は 1 を返します。

changes関数の使い方(3)

-- --

次に UPDATE 文を使って一部のデータを更新します。

update staff set address = 'Osaka' where address = 'osaka';

changes関数の使い方(4)

今回の UPDATE 文で更新されたデータの数は 2 だったので changes 関数は 2 を返します。

select changes();

changes関数の使い方(5)

-- --

次に DELETE 文を使って一部のデータを削除します。

delete from staff where address = 'Tokyo';

changes関数の使い方(6)

今回の DELETE 文で削除されたデータの数は 3 だったので changes 関数は 3 を返します。

select changes();

changes関数の使い方(7)

このように changes 関数を使うことで INSERT 文、 UPDATE 文、 DELETE 文によって処理された行数を取得することができます。

-- --

changes 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。