この質問にはすでに答えがあります:
主キーとは何ですか
(答えは4つ)
3 年前
に閉店しました。
現在テーブルがあります:
userID | color | quantity
-------------------------
ここで、userID は主キーです。私の問題は、DB (同じ ID の項目が既に 1 つある) に挿入しようとすると、エラーが発生することです: pq: 重複したキー値が一意の制約に違反しています挿入には lib/pq パッケージで Go を使用しています。
PK を何に使用するかについて間違った考えを持っているのか、それともどのような種類のテーブルを作成する必要があるのか理解していないのかわかりません。
------------------------
主キーはテーブル内の単一行を一意に識別するキーであるため、一意である必要があります。テーブル内に同じ userID を持つ行がさらに必要な場合は、userID を主キーにすることはできません。
主キーとして列 (または列のグループ) を指定すると、PostgreSQL はそれに一意性制約を適用するため、テーブル内の 2 つの行がその列の内容と同じになることはあり得ません。これが、制約違反エラーが表示される理由です。r.
この問題は、行ごとに一意の値を持つ別の ID 列 (例: 自動インクリメントされたシーケンス) を追加し、それを userID の代わりに主キーにすることで解決できます。
ここでは、主キーの使用法をより深く理解できるよう、Postgres の主キーに関する詳細なチュートリアルを示します。