[解決済み】Postgresqlで、2つのカラムの組み合わせで一意性を強制する。
2022-04-03 13:27:31
質問
PostgreSQLで、2つの列が一意でなければならないようなテーブルを設定したいのです。どちらかの値が複数あっても構いませんが、両方を共有するものが2つない限りです。
例えば
CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)
だから
col1
と
col2
は繰り返せますが、同時にはできません。つまり、次のようなものが許されます(idは含まれません)。
1 1
1 2
2 1
2 2
が、これは違う。
1 1
1 2
1 1 -- would reject this insert for violating constraints
解決方法は?
CREATE TABLE someTable (
id serial PRIMARY KEY,
col1 int NOT NULL,
col2 int NOT NULL,
UNIQUE (col1, col2)
)
autoincrement
はpostgresqlではありません。を指定する必要があります。
integer primary key generated always as identity
(または
serial
PG 9 以下を使用する場合。
serial
は、PG 10 でソフト非推奨となりました。
).
もし
col1
と
col2
が一意であり、NULLであってはならないのであれば、これらは良い主キーになります。
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
PRIMARY KEY (col1, col2)
)
関連
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CREATE VIEW は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] テーブルのFROM句の項目がない [終了しました] 。
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み] ORA-01779: キーが保存されていないテーブルにマップされる列を変更できません。
-
[解決済み] Presto SQL ピボッティング(言葉は悪いですが)データ
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] SQLで複数のGROUP BYを使用する場合とは?
-
[解決済み] Postgresql。条件付き一意性制約