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

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

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

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

Q&A

解決済

2回答

680閲覧

insertできない

chintao1224

総合スコア155

PostgreSQL

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

0グッド

0クリップ

投稿2017/10/15 22:13

postgresql9.6を使っています。

なぜかinsertできませんでした。
調べてみると、このページ(https://www.xmisao.com/2014/06/07/duplicate-key-value-violates-unique-constant-primary-key-on-postgresql.html)のエラーでした。

テーブルはIDをオートインクリメントして主キーにするタイプと、ID(char)と登録日時(timestamp)を2つ主キーにするタイプがあります。

なるべくオートインクリメントが主キーになるテーブルは使わないほうが良いのでしょうか?

それと、上記のエラーが起きないようにするためにはどうすれば良いでしょうか?

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

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

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

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

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

guest

回答2

0

業務上意味のない連番などのキーをサロゲートキーと言います。
業務上一意となるキーをナチュラルキーと言います。
それぞれのメリット、デメリットは以下のサイトが分かりやすいですので参考までに。
http://dbflute.seasar.org/ja/manual/topic/dbdesign/surrogatekey.html

投稿2017/10/16 00:39

root_jp

総合スコア4666

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

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

0

ベストアンサー

なるべくオートインクリメントが主キーになるテーブルは使わないほうが良いのでしょうか?

オートインクレメントを主キーにされるのに特に問題は無いと思います。

ご提示のサイトの通りに修正されれば、インサート時にエラーにはならないと思います。

もしかしたらinsert時にidを指定されてはいないでしょうか?
INSERT INTO test_seq_tbl (id,value) VALUES (2,'value');
でしたら不要です。

登録日時(timestamp)をPKEY

timestampをpkeyにするのはお勧めできません、同時刻が発生しない保証はない為です。

投稿2017/10/15 22:56

編集2017/10/16 05:21
A.Ichi

総合スコア4070

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

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

chintao1224

2017/10/17 12:50

このエラーはオートインクリメントの主キーでなく、複数の主キーにすれば発生しないのでしょうか?
A.Ichi

2017/10/17 13:12

ご提示されているサイトに有ります様にMAXにて最大値を探して、SEQ番号の始まりの番号をその番号にセットすれば、桁あふれしない限りインサート時に重複は発生しないと思います。 出来ればテーブル定義もわかるとお答えできる部分も有ると考えます。
chintao1224

2017/10/21 07:21

ありがとうございました。勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問