Re: 34537
arashi1977
居住地: 広島
投稿数: 1715
引用:PostgreSQLはWindows版もあるので、実機確認したほうが理解が早いですよ。
また、可能なら「マニュアルから読み取れたのであればそのマニュアルの提示」もあると話が早いです。
以下の通りやってみました。インラインで補足しています。
それと
引用:SERIAL、BIGSERIALは解説の表にもある通り
SERIAL: -2147483648から2147483647
BIGSERIAL: -9223372036854775808から9223372036854775808
という範囲の値を扱えるので、その範囲内なら好きな値を設定(INSERT、UPDATE)できるという意味だと思いますが、どうでしょうか?
◼️質問
シリアル型は、マニュアルだとマイナス値が入らないように読み取れますが、エラーにならないのでしょうか。
実機では試してません。
また、可能なら「マニュアルから読み取れたのであればそのマニュアルの提示」もあると話が早いです。
以下の通りやってみました。インラインで補足しています。
$ psql -U postgres template1
psql (12rc1)
Type "help" for help.
※serial型、bigserial型の列を持つテーブルを作成
template1=# create temp table tmp_34537 (
template1(# test_serial serial,
template1(# test_bigserial bigserial);
CREATE TABLE
template1=# \dt tmp_34537
List of relations
Schema | Name | Type | Owner
-----------+-----------+-------+----------
pg_temp_3 | tmp_34537 | table | postgres
(1 row)
※内部的にはinteger型、bigint型。だが勝手にシーケンスが割り当てられているようだ
template1=# \d tmp_34537
Table "pg_temp_3.tmp_34537"
Column | Type | Collation | Nullable | Default
----------------+---------+-----------+----------+---------------------------------------------------
test_serial | integer | | not null | nextval('tmp_34537_test_serial_seq'::regclass)
test_bigserial | bigint | | not null | nextval('tmp_34537_test_bigserial_seq'::regclass)
※シーケンスの存在を確認
template1=# \ds
List of relations
Schema | Name | Type | Owner
-----------+------------------------------+----------+----------
pg_temp_3 | tmp_34537_test_bigserial_seq | sequence | postgres
pg_temp_3 | tmp_34537_test_serial_seq | sequence | postgres
(2 rows)
※設問の通り「-10」はINSERTできる
template1=# insert into tmp_34537 values (-10, -10);
INSERT 0 1
template1=# select * from tmp_34537;
test_serial | test_bigserial
-------------+----------------
-10 | -10
(1 row)
引用:
あと、以下選択肢も意味を理解できません。
SERIAL・BIGSERIAL型にはユーザがデータ型の範囲内で任意の値を設定できる
SERIAL: -2147483648から2147483647
BIGSERIAL: -9223372036854775808から9223372036854775808
という範囲の値を扱えるので、その範囲内なら好きな値を設定(INSERT、UPDATE)できるという意味だと思いますが、どうでしょうか?
投稿ツリー
- 34537 (KETNO, 2020-1-7 8:56)