Erstellen von Einschränkungen

Eine Einschränkung kann beim Erstellen einer Tabelle mit CREATE TABLE erstellt bzw. einer Tabelle später mit ALTER TABLE hinzugefügt werden:

  • Einspaltige Einschränkungen können bei der Spaltendefinition inline erstellt werden.

  • Mehrspaltige Einschränkungen müssen in einer separaten Klausel (also „Out-of-Line“) erstellt werden, die die Spalten in der Einschränkung festlegt.

Zum Erstellen einer Einschränkung muss die Rolle, die zum Erstellen der Einschränkung verwendet wird, bestimmte Zugriffssteuerungsrechte erhalten. Weitere Informationen dazu finden Sie unter Anforderungen an die Zugriffssteuerung.

Inline-Erstellen von Einschränkungen

Die folgende Inline-Syntax kann nur für einspaltige Einschränkungen verwendet werden:

CREATE [ OR REPLACE ] TABLE <name> (<column_name> <column_type> [ <inline_constraint> ] , ... )

ALTER TABLE <name> ADD COLUMN <column_name> <column_type> [ <inline_constraint> ]
Copy

Weitere Details zur Syntax der inline_constraint finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

„Out-of-Line“-Erstellen von Einschränkungen

Folgende „Out-of-Line“-Syntax muss für mehrspaltige Einschränkungen verwendet werden, kann jedoch auch für einspaltige Einschränkungen genutzt werden:

CREATE [ OR REPLACE ] TABLE <name> ( ... , [ <outofline_constraint> ], ... )

ALTER TABLE <name> ADD <outofline_constraint>
Copy

Weitere Informationen zur Syntax der outofline_constraint finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

Einschränkungen in CREATE TABLE … LIKE und CLONE

Snowflake unterstützt das Erstellen von Tabellenkopien mit CREATE TABLE:

  • Verwenden Sie zum Erstellen einer leeren Kopie CREATE TABLE … LIKE.

  • Verwenden Sie zum Erstellen eines Klons CREATE TABLE … CLONE.

Außerdem werden beim Klonen eines Schemas oder einer Datenbank automatisch Tabellenkopien erstellt.

Unabhängig davon, wie eine Kopie für eine Tabelle erstellt wird, werden die Einschränkungen der Originaltabelle mit kopiert. Beim Kopieren eines Fremdschlüssels mit einer referenzierenden Tabelle (Fremdschlüsseltabelle) und einer referenzierten Tabelle (Primärschlüsseltabelle) können folgende Szenarien auftreten:

  • Wenn beide Tabellen im gleichen Befehl kopiert werden (z. B. beim Klonen eines Schemas oder einer Datenbank), wird zwischen der neuen referenzierenden Tabelle und der referenzierten Tabelle ein neuer Fremdschlüssel erstellt.

  • Wenn nur die referenzierende Tabelle kopiert wird, wird für die referenzierende Tabelle ein neuer Fremdschlüssel erstellt, der auf die ursprüngliche Primärschlüsseltabelle als referenzierte Tabelle verweist.

  • Wenn nur die referenzierte Tabelle kopiert wird, werden keine neuen Fremdschlüssel erstellt, obwohl die Primärschlüssel/eindeutigen Schlüssel kopiert werden.

Wenn Sie also eine referenzierende und eine referenzierte Tabelle separat kopieren, müssen Sie manuell einen neuen Fremdschlüssel erstellen oder die Primärschlüsseltabelle für den neuen Fremdschlüssel manuell ändern.