回答編集履歴

1

追加

2017/02/25 06:46

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -25,3 +25,59 @@
25
25
 
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ テーブルが決まらない場合を考えでみました。
32
+
33
+ (1)RETURNINGを使う
34
+
35
+ INSERTのSQLでreturningを使う事で最新番号を取得する。
36
+
37
+ (2)FUNCTIONを使う
38
+
39
+ FUNCTIONのEXCEPTIONでエラーを拾う。
40
+
41
+ ```sql
42
+
43
+ CREATE OR REPLACE FUNCTION get_last_seq() RETURNS int AS
44
+
45
+ $BODY$
46
+
47
+ DECLARE _RC INT := 0;
48
+
49
+ BEGIN
50
+
51
+ SELECT LASTVAL() INTO _RC;
52
+
53
+ RETURN _RC;
54
+
55
+ EXCEPTION
56
+
57
+ WHEN object_not_in_prerequisite_state
58
+
59
+ THEN RETURN 0;
60
+
61
+ END;
62
+
63
+ $BODY$
64
+
65
+ LANGUAGE plpgsql;
66
+
67
+
68
+
69
+
70
+
71
+ tsdb=> select get_last_seq();
72
+
73
+ get_last_seq
74
+
75
+ --------------
76
+
77
+ 0
78
+
79
+ (1 row)
80
+
81
+ -- 0はnextval未実行
82
+
83
+ ```