Eindeutige Einschränkungen in Tabellen erzwingen, die nullfähige Spalten enthalten
In diesem Artikel werden die Herausforderungen beim Erstellen eindeutiger Einschränkungen für Tabellen erläutert, die nullfähige Spalten enthalten. Das Ziel besteht darin, zu verhindern, dass mehrere Zeilen dieselbe Wertekombination aufweisen, selbst wenn die nullbaren Spalten null sind.
Frage:
Das bereitgestellte Tabellenschema verfügt über eine UserRepository-Spalte, die NULL-Werte zulässt. Der Benutzer möchte jedoch sicherstellen, dass für jedes Paar aus UserId und RecipeId nur eine Zeile vorhanden ist, unabhängig vom MenuId-Wert.
Antwort:
PostgreSQL 15 oder höher:
<code class="language-sql">ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE NULLS NOT DISTINCT (UserId, MenuId, RecipeId);</code>
PostgreSQL 14 oder niedriger:
<code class="language-sql">CREATE UNIQUE INDEX favo_3col_uni_idx ON Favorites (UserId, MenuId, RecipeId) WHERE MenuId IS NOT NULL; CREATE UNIQUE INDEX favo_2col_uni_idx ON Favorites (UserId, RecipeId) WHERE MenuId IS NULL;</code>
Vorteile:
Nachteile (nur Teilindex):
Alternative:
Das obige ist der detaillierte Inhalt vonWie erzwinge ich eindeutige Einschränkungen mit Nullable-Spalten in einer Datenbanktabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!