Postgresでは、特定のカラムに取り得る値をどのように制限するのですか?
2023-07-27 18:41:08
質問
カラムを作成したい
element_type
という名前の)テーブルの中に
discussion
と呼ばれる) テーブルで、テキスト値 "lesson" または "quiz" を許可しますが、他の値がその列に挿入されるとエラーが生成されます。
という別のテーブルを作成することができることは理解しています。
element_types
というテーブルを作成し、カラム
element_id
(主キー、int) と
element_type
(一意、text) を作成し、外部キーとして
foreign_element_id
テーブルで
discussion
参照
element_types
のカラム
element_id
. または、代わりに、私は忘れることができます
element_id
を完全に忘れて、単に
element_type
を主キーとして設定します。 しかし、私は新しいテーブルを作成することを避けたいと思います。
新しいテーブルを作成することなく、列で可能な値を制限する、より簡単な方法はありますか?
どのように解決するのですか?
あなたは
CHECK CONSTRAINT:
ALTER TABLE distributors
ADD CONSTRAINT check_types
CHECK (element_type = 'lesson' OR element_type = 'quiz');
IMO では、よりクリーンな選択肢として
ENUM
:
CREATE TYPE element_type AS ENUM ('lesson', 'quiz');
関連
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] SELECT' 文の 'IF' - カラムの値に基づいて出力値を選択する
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] 'ユーザー "postgres" のパスワード認証に失敗しました'
-
[解決済み] Postgres の全テーブルの行数を求めるには?
-
[解決済み] 最後に挿入されたIDを取得する方法は?
-
[解決済み] 制約の有効化に失敗しました。1つ以上の行が非Null、ユニーク、または外部キー制約に違反する値を含んでいます。
-
[解決済み] 2つのデータベース間に外部キー関係を追加する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] ある列の最大値を持つ行を取得する
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] VARCHARとCHARの違いは何ですか?