Einschränkungseigenschaften

Einschränkungseigenschaften werden in der CONSTRAINT-Klausel für einen CREATE TABLE- oder ALTER TABLE-Befehl angegeben.

Unter diesem Thema:

ANSI SQL-Einschränkungseigenschaften

Eigenschaften für alle Einschränkungen

Die folgenden Einschränkungseigenschaften des ANSI SQL-Standards gelten für alle Einschränkungen (eindeutiger Schlüssel, Primärschlüssel und Fremdschlüssel):

{ ENFORCED | NOT ENFORCED }

Gibt an, ob die Einschränkung in einer Transaktion erzwungen wird. Beachten Sie, dass NOT NULL die einzige Einschränkung ist, die von Snowflake erzwungen wird. Siehe Einschränkungen für die referenzielle Integrität.

{ DEFERRABLE | NOT DEFERRABLE }

Gibt an, ob bei nachfolgenden Transaktionen die Einschränkungsprüfung bis zum Ende der Transaktion zurückgestellt werden kann.

INITIALLY { DEFERRED | IMMEDIATE }

Gibt für Einschränkungen vom Typ DEFERRABLE an, ob die Prüfung der Einschränkungen mit Beginn der nächsten Transaktion zurückgestellt werden kann.

Die Standardwerte für die standardmäßigen Einschränkungseigenschaften lauten:

NOT ENFORCED DEFERRABLE INITIALLY DEFERRED

Eigenschaften nur für Fremdschlüsseleinschränkungen

Die folgenden Einschränkungseigenschaften sind ebenfalls Teil des ANSI SQL-Standards, gelten jedoch nur für Fremdschlüssel:

MATCH { FULL | PARTIAL | SIMPLE }

Gibt an, ob der Fremdschlüssel in Bezug auf NULL-Werte in einer oder mehreren Spalten erfüllt ist.

UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

Gibt die Aktion an, die ausgeführt werden soll, wenn der Primärschlüssel/eindeutige Schlüssel für den Fremdschlüssel aktualisiert wird.

DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

Gibt die Aktion an, die ausgeführt werden soll, wenn der Primärschlüssel/eindeutige Schlüssel für den Fremdschlüssel gelöscht wird.

Die Standardwerte für die Eigenschaften von Fremdschlüsseleinschränkungen lauten:

MATCH FULL UPDATE NO ACTION DELETE NO ACTION

Erweiterte Einschränkungseigenschaften

Folgende Eigenschaften sind nicht Teil des ANSI SQL-Standards, werden jedoch aus Gründen der Kompatibilität mit anderen Datenbanken unterstützt. Sie gelten für alle Einschränkungen (eindeutiger Schlüssel, Primärschlüssel und Fremdschlüssel):

{ ENABLE | DISABLE }

Gibt an, ob die Einschränkung aktiviert oder deaktiviert ist. Diese Eigenschaften werden aus Gründen der Kompatibilität mit Oracle bereitgestellt.

Standardmäßig ist diese Einschränkungseigenschaft auf DISABLE eingestellt.

{ VALIDATE | NOVALIDATE }

Gibt an, ob vorhandene Daten in der Tabelle überprüft werden sollen, wenn eine Einschränkung erstellt wird. Wird nur in Verbindung mit der Eigenschaft { ENABLE | DISABLE} genutzt.

Standardmäßig ist diese Einschränkungseigenschaft auf NOVALIDATE eingestellt.

{ RELY | NORELY }

Gibt an, ob eine Einschränkung im Modus NOVALIDATE beim Neuschreiben von Abfragen berücksichtigt wird.

Standardmäßig ist diese Einschränkungseigenschaft auf NORELY eingestellt.

Wenn Sie sichergestellt haben, dass die Daten in der Tabelle den Einschränkungen entsprechen, können Sie diesen Wert in RELY ändern, um anzuzeigen, dass die Abfrageoptimierung erwarten kann, dass die Daten in der Tabelle den Einschränkungen entsprechen. Durch Festlegen der RELY-Eigenschaft lässt sich die Abfrageleistung verbessern, z. B. durch Beseitigen unnötiger Join-Verknüpfungen.

Bei Primärschlüssel- und Fremdschlüsseleinschränkungen legen Sie diese Eigenschaft sowohl für die Primärschlüssel- als auch für die Fremdschlüsseleinschränkung fest. Beispiel:

ALTER TABLE table_with_primary_key ALTER CONSTRAINT a_primary_key_constraint RELY;
ALTER TABLE table_with_foreign_key ALTER CONSTRAINT a_foreign_key_constraint RELY;
Copy

Nicht-Standardwerte für die Einschränkungseigenschaften ENABLE und VALIDATE

Aus Gründen der Syntaxkompatibilität mit anderen Datenbanken unterstützt Snowflake die Angabe von nicht standardmäßigen Werten für Einschränkungseigenschaften.

Wenn Sie jedoch beim Erstellen einer neuen Einschränkung ENABLE oder VALIDATE (Nicht-Standardwerte für diese Eigenschaften) angeben, wird die Einschränkung nicht erstellt. Dies gilt nicht für RELY. Die Angabe von RELY führt dazu, dass die neue Einschränkung erstellt wird.

Beachten Sie, dass Snowflake den Sitzungsparameter UNSUPPORTED_DDL_ACTION bereitstellt, der festlegt, ob bei Angabe von Nicht-Standardwerten während des Erstellens von Einschränkungen ein Fehler generiert wird.