Skip to content

Commit 28fe7d9

Browse files
authored
Update 20241113a_PostgreSQLで連番を自動生成してくれるIDENTITY列.md
1 parent 9d77ed2 commit 28fe7d9

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

source/_posts/20241113a_PostgreSQLで連番を自動生成してくれるIDENTITY列.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ Technology Innovation Group真野です。
2626

2727
なお、調査に用いたPostgreSQLバージョンは `17.0` です。
2828

29+
**2024/11/13 追記しました:**
30+
31+
- 「作成されたシーケンスの名称」章のシーケンス名取得の方法を追記
32+
- 「シーケンス名の上限63文字を超過したテーブル、カラム名の場合」章を追加
33+
- 「テーブル名を変更した時シーケンス名はどうなるか」章を追加
34+
- 「カラム名をを変更した時シーケンス名はどうなるか」章を追加
35+
- 「独自に作成したシーケンスとの紐づけ方法」を追加
36+
2937
## 記事のサマリ
3038

3139
- 新規構築なら連番の自動採番はSERIAL/BIGSERIALの代わりに `GENERATED ALWAYS AS IDENTITY` の利用がベター
@@ -126,7 +134,7 @@ CREATE TABLE color (
126134
);
127135
```
128136

129-
color_idに3を指定してインターとしようとするとエラーが出て止められます
137+
color_idに3を指定してインサートとしようとするとエラーが出て止められます
130138

131139
```sql
132140
postgres=# INSERT INTO color (color_id, color_name) VALUES (3, 'Blue');
@@ -531,7 +539,7 @@ CREATE TABLE color (
531539
);
532540
```
533541

534-
### 10. 文字列型とGENERATED BY DEFAULT AS IDENTITYの組み合わせ
542+
### 10. 文字列型とGENERATED AS IDENTITYの組み合わせ
535543

536544
文字列型(text型)にGENERATED ALWAYS AS IDENTITYを指定すると、いい感じの型変換により '1'、'2'、...といった採番がされないかと思いついたので試しました。
537545

@@ -545,7 +553,7 @@ ERROR: identity column type must be smallint, integer, or bigint
545553

546554
無事エラーで、これは対応していないようです。型としては、`smallint` `integer` `bigint` のみ対応。
547555

548-
### 11. SERIAL型とGENERATED BY DEFAULT AS IDENTITYの組み合わせ
556+
### 11. SERIAL型とGENERATED AS IDENTITYの組み合わせ
549557

550558
SERIAL型であれば、型としては `integer` 型なので、いけるのではと一応チャレンジしました。結果は以下のエラーです。
551559

0 commit comments

Comments
 (0)