もしテーブルが決まっているなら指定して取るのはどうでしょうか?
sql
1
2tsdb=> \d abc
3 Table "public.abc"
4 Column | Type | Modifiers
5--------+---------+-------------------------------------------------
6 a | integer | not null default nextval('abc_a_seq'::regclass)
7 b | integer |
8
9SELECT last_value FROM abc_a_seq;
10
テーブルが決まらない場合を考えでみました。
(1)RETURNINGを使う
INSERTのSQLでreturningを使う事で最新番号を取得する。
(2)FUNCTIONを使う
FUNCTIONのEXCEPTIONでエラーを拾う。
sql
1CREATE OR REPLACE FUNCTION get_last_seq() RETURNS int AS
2$BODY$
3DECLARE _RC INT := 0;
4BEGIN
5 SELECT LASTVAL() INTO _RC;
6 RETURN _RC;
7EXCEPTION
8 WHEN object_not_in_prerequisite_state
9 THEN RETURN 0;
10END;
11$BODY$
12LANGUAGE plpgsql;
13
14
15tsdb=> select get_last_seq();
16 get_last_seq
17--------------
18 0
19(1 row)
20-- 0はnextval未実行
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/24 10:02
2017/02/27 04:08