PostgreSQL/INSERTした時のserial値を取得する方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* PostgreSQLでINSERTした時のserial値を取得する方法 [#kadb...
INSERTした時にインクリメントされる、serial not null prima...
以下、実際にテーブルを作成し、INSERTした時の実行例を記し...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* テスト環境など [#r1f52cc7]
PostgreSQLのバージョンと作成したテーブルを以下に記します。
** PostgreSQLバージョン [#s1d315e5]
sakuradb=> select version();
version
--------------------------------------------------------...
PostgreSQL 9.4.9 on armv7l-unknown-linux-gnueabihf, com...
(1 row)
** 作成したテストテーブル [#la934df2]
CREATE TABLE tbl (id serial not null primary key, txt te...
** テスト環境 [#lbeea4b0]
2つのクライアントから作成したtblテーブルを操作します。
#ref(01.png)
* 2つのクライアントから操作してみる [#n3aeafb8]
1つのPostgreSQLサーバに2つのクライアント(psqlフロントエン...
上記のテスト環境にする記した通り、AとBの2つのクライアント...
以下に時系列で記します。
||''A''|''B''|
|1|PostgreSQLに接続|PostgreSQLに接続|
|2|sakuradb=> INSERT INTO tbl(txt) VALUES('A-01')&br;INSE...
|3||sakuradb=> INSERT INTO tbl(txt) VALUES('B-01');&br;IN...
|4|sakuradb=> SELECT LASTVAL();&br; lastval&br;---------&...
|5|sakuradb=> INSERT INTO tbl(txt) VALUES('A-02');&br;INS...
上記を見るとわかるように、各クライアント側でINSERTした最...
* BEGIN COMMIT ROLLBACK を使用してみた場合の動作 [#w43ce9...
以下にBEGIN COMMIT ROLLBACKを使用した実行例を記します。~
テーブルはDROP,CREATEしなおしました。
||''A''|''B''|
|1|sakuradb=> BEGIN;&br;BEGIN&br;||
|3|sakuradb=> INSERT INTO tbl(txt) VALUES('A-01');&br;INS...
|4||sakuradb=> INSERT INTO tbl(txt) VALUES('B-01');&br;IN...
|5|sakuradb=> ROLLBACK;&br;ROLLBACK;&br;||
|6|sakuradb=> SELECT LASTVAL();&br; lastval&br;---------&...
|7|sakuradb=> INSERT INTO tbl(txt) VALUES('A-02');&br;INS...
上記の結果を見ると ROLLBACKしたINSERTは破棄され、LASTVAL...
上記手順後にSELECT * した時の出力です。~
id=1が登録されていないのが確認できます。
sakuradb=> SELECT * FROM tbl;
id | txt
----+------
2 | B-01
3 | A-02
以上、serial用に採番された値を取得するLASTVAL()の動作につ...
#htmlinsertpcsp(db-btm.html,db-sp.html)
終了行:
#navi(../)
* PostgreSQLでINSERTした時のserial値を取得する方法 [#kadb...
INSERTした時にインクリメントされる、serial not null prima...
以下、実際にテーブルを作成し、INSERTした時の実行例を記し...
#contents
#htmlinsertpcsp(db-top.html,db-sp.html)
* テスト環境など [#r1f52cc7]
PostgreSQLのバージョンと作成したテーブルを以下に記します。
** PostgreSQLバージョン [#s1d315e5]
sakuradb=> select version();
version
--------------------------------------------------------...
PostgreSQL 9.4.9 on armv7l-unknown-linux-gnueabihf, com...
(1 row)
** 作成したテストテーブル [#la934df2]
CREATE TABLE tbl (id serial not null primary key, txt te...
** テスト環境 [#lbeea4b0]
2つのクライアントから作成したtblテーブルを操作します。
#ref(01.png)
* 2つのクライアントから操作してみる [#n3aeafb8]
1つのPostgreSQLサーバに2つのクライアント(psqlフロントエン...
上記のテスト環境にする記した通り、AとBの2つのクライアント...
以下に時系列で記します。
||''A''|''B''|
|1|PostgreSQLに接続|PostgreSQLに接続|
|2|sakuradb=> INSERT INTO tbl(txt) VALUES('A-01')&br;INSE...
|3||sakuradb=> INSERT INTO tbl(txt) VALUES('B-01');&br;IN...
|4|sakuradb=> SELECT LASTVAL();&br; lastval&br;---------&...
|5|sakuradb=> INSERT INTO tbl(txt) VALUES('A-02');&br;INS...
上記を見るとわかるように、各クライアント側でINSERTした最...
* BEGIN COMMIT ROLLBACK を使用してみた場合の動作 [#w43ce9...
以下にBEGIN COMMIT ROLLBACKを使用した実行例を記します。~
テーブルはDROP,CREATEしなおしました。
||''A''|''B''|
|1|sakuradb=> BEGIN;&br;BEGIN&br;||
|3|sakuradb=> INSERT INTO tbl(txt) VALUES('A-01');&br;INS...
|4||sakuradb=> INSERT INTO tbl(txt) VALUES('B-01');&br;IN...
|5|sakuradb=> ROLLBACK;&br;ROLLBACK;&br;||
|6|sakuradb=> SELECT LASTVAL();&br; lastval&br;---------&...
|7|sakuradb=> INSERT INTO tbl(txt) VALUES('A-02');&br;INS...
上記の結果を見ると ROLLBACKしたINSERTは破棄され、LASTVAL...
上記手順後にSELECT * した時の出力です。~
id=1が登録されていないのが確認できます。
sakuradb=> SELECT * FROM tbl;
id | txt
----+------
2 | B-01
3 | A-02
以上、serial用に採番された値を取得するLASTVAL()の動作につ...
#htmlinsertpcsp(db-btm.html,db-sp.html)
ページ名: