Übersicht über Einschränkungen¶
Snowflake bietet folgende Einschränkungsfunktionen:
Eindeutige Schlüssel, Primärschlüssel und Fremdschlüssel sowie NOT NULL-Spalten.
Benannte Einschränkungen.
Einspaltige und mehrspaltige Einschränkungen.
Inline- und Out-of-Line-Erstellung von Einschränkungen.
Unterstützung für das Erstellen, Ändern und Löschen von Einschränkungen.
Unter diesem Thema:
Unterstützte Einschränkungstypen¶
Snowflake unterstützt folgende Einschränkungstypen aus dem ANSI SQL-Standard:
UNIQUE
PRIMARY KEY
FOREIGN KEY
NOT NULL
Eine Tabelle kann mehrere eindeutige Schlüssel und Fremdschlüssel enthalten, doch nur einen Primärschlüssel. Alle Fremdschlüssel müssen auf einen entsprechenden primären oder eindeutigen Schlüssel verweisen, der mit den Spaltentypen der einzelnen Spalten im Fremdschlüssel übereinstimmt. Der Primärschlüssel für einen Fremdschlüssel kann sich in einer anderen Tabelle oder in derselben Tabelle wie der Fremdschlüssel befinden.
Bemerkung
Snowflake unterstützt das Definieren und Verwalten von Einschränkungen, erzwingt sie jedoch nicht, mit Ausnahme von NOT NULL- Einschränkungen, die immer erzwungen werden.
Tabelleneinschränkungen¶
Snowflake unterstützt das Definieren von Einschränkungen für permanente, transiente und temporäre Tabellen. Einschränkungen können für Spalten aller Datentypen definiert werden. Die Anzahl der Spalten, die in eine Einschränkung einbezogen werden können, ist unbegrenzt.
Wenn eine Tabelle mit CREATE TABLE … LIKE oder CREATE TABLE … CLONE kopiert wird, werden alle in der Tabelle vorhandenen Einschränkungen, einschließlich der Fremdschlüssel, in die neue Tabelle kopiert.
Bei Tabellen mit Einschränkungen werden zusätzliche Befehle und Funktionen wie DROP/UNDROP und GET_DDL unterstützt. Sie werden auch bei Schemas und Datenbanken unterstützt.
Wenn für Snowflake Time Travel frühere Versionen einer Tabelle kopiert werden, wird die aktuelle Version der Einschränkungen für die Tabelle verwendet, da Snowflake keine früheren Versionen von Einschränkungen in Tabellenmetadaten speichert.
Einspaltige und mehrspaltige Einschränkungen¶
Einschränkungen können für eine einzelne Spalte oder für mehrere Spalten in derselben Tabelle definiert werden.
Bei mehrspaltigen Einschränkungen (z. B. zusammengesetzte Primärschlüssel oder eindeutige Schlüssel) werden die Spalten sortiert und hat jede Spalte eine entsprechende Schlüsselsequenz.
Inline- und Out-of-Line-Einschränkungen¶
Beim Erstellen oder Ändern von Tabellen werden Einschränkungen entweder inline oder „Out-of-Line“ definiert:
Inline-Einschränkungen werden als Teil der Spaltendefinition erstellt und können nur für einspaltige Einschränkungen verwendet werden.
Out-of-Line-Einschränkungen werden mit einer separaten Klausel definiert, die die Spalten angibt, für die die Einschränkung erstellt wird. Sie können zum Erstellen von einspaltigen oder mehrspaltigen Einschränkungen sowie zum Erstellen von Einschränkungen für vorhandene Spalten genutzt werden.