質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

4回答

4828閲覧

Serial型の使い方がわかりません

archipelago

総合スコア17

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2019/05/21 09:44

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
PostgresSQLで新しくテーブルを作っているのですが、テーブルにデータを入れようとするとSerial型がうまく反映されていないのかデータが入りません
会員IDを入力せずに自動連番にしたいのですが、どうしたらいいでしょうか

発生している問題・エラーメッセージ

sample=>
sample=> CREATE TABLE member(
sample(> memberid serial --会員ID
sample(> , name VARCHAR(255) NOT NULL --氏名
sample(> , address VARCHAR(255) NOT NULL --住所
sample(> , memberDate DATE NOT NULL DEFAULT CURRENT_DATE --入会年月日
sample(> , primary key(memberid)
sample(> );
CREATE TABLE

sample=> INSERT INTO member VALUES
sample-> ('山田太郎', '東京都〇〇','2000-10-10')
sample-> ;
ERROR: 型integerの入力構文が無効です: "山田太郎"
行 2: ('山田太郎', '東京都〇〇', '199...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

エラー自体はinsert into memberとしているからvaluesでは全てのカラムを指定しないと駄目で、
valuesの先頭の項目をmemberidに割り当てようとして属性が違うためエラーになっています。

memberidserialで自動で割り当てたいという事なので、

SQL

1INSERT INTO member(name, address, memberDate) values 2 ('山田太郎', '東京都〇〇','2000-10-10')

のように、memberid を省略するような記述でなければなりません。

一応、nextval(9.16. シーケンス操作関数)を使用すればカラムを指定しない記述もできます。
**nextval()**はserialに付与された名前を指定します。
※単にcreate tableした場合には(テーブル名_カラム名_seq)という名前が付与されます。

SQL

1INSERT INTO member values 2 (nextval('member_memberid_seq'::regclass),'山田太郎', '東京都〇〇','2000-10-10')

投稿2019/05/21 09:52

編集2019/05/21 10:08
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

archipelago

2019/05/22 00:14

データを入れることができました!ありがとうございます
guest

0

どの列に何を入れるか指定しないといけない
たとえserialを使っていようが列指定しないならvaluesには存在する列全て書かなきゃいけないです
INTO の後に列名を書きましょう

投稿2019/05/21 09:49

hentaiman

総合スコア6421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

対応するカラムを明示的に指定しましょう。

INSERT INTO member(name, address, memberDate) VALUES('山田太郎', '東京都〇〇','2000-10-10');

とすれば良いと思います。nameをmemberidのところに入れようとしてエラーになっているようなメッセージです。

投稿2019/05/21 09:49

tetsunosuke

総合スコア1292

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SQL

1INSERT INTO member(name, address, memberDate) VALUES('山田太郎', '東京都〇〇','2000-10-10')

投稿2019/05/21 09:47

編集2019/05/21 09:51
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問