Wie schränken Sie in Postgres mögliche Werte für eine bestimmte Spalte ein?
Ich möchte erstellen Sie eine Spalte element_type
in einer Tabelle (genannt discussion
) ermöglicht es, dass die text-Werte "Lektion" oder "quiz" aber einen Fehler erzeugen, wenn jeder andere Wert wird in die betreffende Spalte eingefügt.
Ich verstehe, dass ich erstellen Sie eine separate Tabelle namens element_types
mit Spalten element_id
(primary key, int) und element_type
(einzigartigen text) und erstellen Sie eine foreign key - foreign_element_id
in der Tabelle discussion
verweisen auf element_types
's Spalte element_id
. Oder alternativ könnte ich vergessen element_id
insgesamt und nur eingestellt element_type
als Primärschlüssel. Aber ich möchte vermeiden, erstellen Sie eine neue Tabelle.
Ist es ein einfacher Weg, um zu beschränken, möglich Werte in einer Spalte, ohne eine neue Tabelle erstellen?
InformationsquelleAutor der Frage Deets McGeets | 2011-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man hinzufügen, eine
CHECK CONSTRAINT:
Obwohl IMO die sauberere Möglichkeit wäre das erstellen einer
ENUM
:InformationsquelleAutor der Antwort NullUserException
Einen shorcut syntax ist :
Übersetzt automaticolly :
Genießen 😉
InformationsquelleAutor der Antwort ffrey
Dieser trigger löst eine Ausnahme aus, wenn jemand versuchen, einfügen oder aktualisieren einer Zeile mit einer ungültigen element_type.
Wenn Sie möchten, entfernen Sie die hard-codiert-Typen, die Sie anpassen können, um zu prüfen, ob der neue Typ besteht in einer Art Tabelle.
InformationsquelleAutor der Antwort escrubalo