ALTER TABLE table_constraint (Transact-SQL)ALTER TABLE table_constraint (Transact-SQL)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Gibt die Eigenschaften einer PRIMARY KEY-, UNIQUE-, FOREIGN KEY- oder CHECK-Einschränkung bzw. eine DEFAULT-Definition an, die einer Tabelle mit der ALTER TABLE-Anweisung hinzugefügt wurde.Specifies the properties of a PRIMARY KEY, UNIQUE, FOREIGN KEY, a CHECK constraint, or a DEFAULT definition added to a table by using ALTER TABLE.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

[ CONSTRAINT constraint_name ]   
{   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        (column [ ASC | DESC ] [ ,...n ] )  
        [ WITH FILLFACTOR = fillfactor   
        [ WITH ( <index_option>[ , ...n ] ) ]  
        [ ON { partition_scheme_name ( partition_column_name ... )  
          | filegroup | "default" } ]   
    | FOREIGN KEY   
        ( column [ ,...n ] )  
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
    | CONNECTION
        ( { node_table TO node_table } 
          [ , {node_table TO node_table }]
          [ , ...n ]
        )
        [ ON DELETE { NO ACTION | CASCADE } ]
    | DEFAULT constant_expression FOR column [ WITH VALUES ]   
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )  
}  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumenteArguments

CONSTRAINTCONSTRAINT
Gibt den Anfang einer PRIMARY KEY-, UNIQUE-, FOREIGN KEY- oder CHECK-Einschränkung oder einer DEFAULT-Definition an.Specifies the start of a definition for a PRIMARY KEY, UNIQUE, FOREIGN KEY, or CHECK constraint, or a DEFAULT.

constraint_nameconstraint_name
Der Name der Einschränkung.Is the name of the constraint. Einschränkungsnamen müssen den Regeln für Bezeichner entsprechen, wobei der Name nicht mit einem Nummernzeichen (#) beginnen darf.Constraint names must follow the rules for identifiers, except that the name cannot start with a number sign (#). Wenn constraint_name nicht angegeben ist, vergibt das System einen Namen für die Einschränkung.If constraint_name is not supplied, a system-generated name is assigned to the constraint.

PRIMARY KEYPRIMARY KEY
Eine Einschränkung, die Entitätsintegrität für eine angegebene Spalte (oder Spalten) mithilfe eines eindeutigen Index erzwingt.Is a constraint that enforces entity integrity for a specified column or columns by using a unique index. Es kann nur eine PRIMARY KEY-Einschränkung für jede Tabelle erstellt werden.Only one PRIMARY KEY constraint can be created for each table.

UNIQUEUNIQUE
Eine Einschränkung, die Entitätsintegrität für eine angegebene Spalte (oder Spalten) mit einem eindeutigen Index bietet.Is a constraint that provides entity integrity for a specified column or columns by using a unique index.

CLUSTERED | NONCLUSTEREDCLUSTERED | NONCLUSTERED
Gibt an, dass ein gruppierter oder nicht gruppierter Index für die PRIMARY KEY- oder UNIQUE-Einschränkung erstellt wird.Specifies that a clustered or nonclustered index is created for the PRIMARY KEY or UNIQUE constraint. Für PRIMARY KEY-Einschränkungen wird standardmäßig CLUSTERED verwendet.PRIMARY KEY constraints default to CLUSTERED. Für UNIQUE-Einschränkungen wird standardmäßig NONCLUSTERED verwendet.UNIQUE constraints default to NONCLUSTERED.

Wenn bereits eine gruppierte Einschränkung oder ein gruppierter Index für eine Tabelle vorhanden ist, kann CLUSTERED nicht angegeben werden.If a clustered constraint or index already exists on a table, CLUSTERED cannot be specified. Wenn bereits eine gruppierte Einschränkung oder ein gruppierter Index für eine Tabelle vorhanden ist, wird für PRIMARY KEY-Einschränkungen standardmäßig NONCLUSTERED verwendet.If a clustered constraint or index already exists on a table, PRIMARY KEY constraints default to NONCLUSTERED.

Die Datentypen ntext, text, varchar(max) , nvarchar(max) , varbinary(max) , xml und image können nicht als Spalten für einen Index angegeben werden.Columns that are of the ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, or image data types cannot be specified as columns for an index.

columncolumn
Eine Spalte oder Liste von Spalten in Klammern, die in einer neuen Einschränkung verwendet werden.Is a column or list of columns specified in parentheses that are used in a new constraint.

[ ASC | DESC ][ ASC | DESC ]
Gibt die Reihenfolge an, in der die Spalte oder die Spalten, die in der Tabelleneinschränkung enthalten sind, sortiert werden.Specifies the order in which the column or columns participating in table constraints are sorted. Die Standardeinstellung ist ASC.The default is ASC.

WITH FILLFACTOR = fillfactorWITH FILLFACTOR =fillfactor
Gibt an, wie weit Datenbank-EngineDatabase Engine die einzelnen Indexseiten füllen soll, die zum Speichern der Indexdaten verwendet werden.Specifies how full the Datenbank-EngineDatabase Engine should make each index page used to store the index data. Vom Benutzer angegebene fillfactor-Werte können Zahlen von 1 bis 100 sein.User-specified fillfactor values can be from 1 through 100. Wenn kein Wert angegeben ist, lautet der Standardwert 0.If a value is not specified, the default is 0.

Wichtig

Das Verwenden von WITH FILLFACTOR = fillfactor als einzige Indexoption, die für die PRIMARY KEY- oder UNIQUE-Einschränkungen gilt, wird hier aus Gründen der Abwärtskompatibilität weiterhin dokumentiert. In zukünftigen Releases wird dies jedoch nicht mehr der Fall sein.Documenting WITH FILLFACTOR = fillfactor as the only index option that applies to PRIMARY KEY or UNIQUE constraints is maintained for backward compatibility, but will not be documented in this manner in future releases. Andere Indexoptionen können in der index_option-Klausel der ALTER TABLE-Anweisung angegeben werden.Other index options can be specified in the index_option clause of ALTER TABLE.

ON { partition_scheme_name ( partition_column_name ) | filegroup| " default " }ON { partition_scheme_name(partition_column_name) | filegroup| " default " }
Gilt für: SQL Server 2008SQL Server 2008 und höher.Applies to: SQL Server 2008SQL Server 2008 and later.

Gibt den Speicherort des Indexes an, der für die Einschränkung erstellt wurde.Specifies the storage location of the index created for the constraint. Wenn partition_scheme_name angegeben wird, wird der Index partitioniert, und die Partitionen werden den Dateigruppen zugeordnet, die durch partition_scheme_name angegeben sind.If partition_scheme_name is specified, the index is partitioned and the partitions are mapped to the filegroups that are specified by partition_scheme_name. Wenn filegroup angegeben ist, wird der Index in der genannten Dateigruppe erstellt.If filegroup is specified, the index is created in the named filegroup. Wenn " default " angegeben ist, oder wenn ON nicht für alle festgelegt ist, wird der Index in derselben Dateigruppe erstellt wie die Tabelle.If " default " is specified or if ON is not specified at all, the index is created in the same filegroup as the table. Wenn ON beim Hinzufügen eines gruppierten Index für eine PRIMARY KEY- oder UNIQUE-Einschränkung angegeben ist, wird die gesamte Tabelle beim Erstellen des gruppierten Index in die angegebene Dateigruppe verschoben.If ON is specified when a clustered index is added for a PRIMARY KEY or UNIQUE constraint, the whole table is moved to the specified filegroup when the clustered index is created.

In diesem Zusammenhang ist DEFAULT kein Schlüsselwort. Stattdessen handelt es sich um einen Bezeichner für die Standarddateigruppe und muss begrenzt sein, wie in ON " default " oder ON [ default ] .In this context, default is not a keyword; it is an identifier for the default filegroup and must be delimited, as in ON " default " or ON [ default ]. Wenn " default " angegeben ist, muss die QUOTED_IDENTIFIER-Option in der aktuellen Sitzung auf ON festgelegt sein.If " default " is specified, the QUOTED_IDENTIFIER option must be ON for the current session. Dies ist die Standardeinstellung.This is the default setting.

FOREIGN KEY REFERENCESFOREIGN KEY REFERENCES
Eine Einschränkung, die referenzielle Integrität für die Daten in der Spalte bereitstellt.Is a constraint that provides referential integrity for the data in the column. FOREIGN KEY-Einschränkungen erfordern, dass jeder Wert in der Spalte in der angegebenen Spalte der Tabelle vorhanden ist, auf die verwiesen wird.FOREIGN KEY constraints require that each value in the column exist in the specified column in the referenced table.

referenced_table_namereferenced_table_name
Die Tabelle, auf die die FOREIGN KEY-Einschränkung verweist.Is the table referenced by the FOREIGN KEY constraint.

ref_columnref_column
Eine Spalte oder Liste von Spalten in Klammern, auf die die neue FOREIGN KEY-Einschränkung verweistIs a column or list of columns in parentheses referenced by the new FOREIGN KEY constraint.

ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
Gibt an, welche Aktion für eine Zeile der geänderten Tabelle ausgeführt werden soll, wenn diese Zeile eine referenzielle Beziehung hat, und die Zeile, auf die verwiesen wird, aus der übergeordneten Tabelle gelöscht wird.Specifies what action happens to rows in the table that is altered, if those rows have a referential relationship and the referenced row is deleted from the parent table. Der Standardwert ist NO ACTION.The default is NO ACTION.

NO ACTIONNO ACTION
SQL Server-Datenbank-EngineSQL Server Database Engine löst einen Fehler aus, und für die Aktion zum Löschen der Zeile in der übergeordneten Tabelle wird ein Rollback ausgeführt.The SQL Server-Datenbank-EngineSQL Server Database Engine raises an error and the delete action on the row in the parent table is rolled back.

CASCADECASCADE
Wenn diese Zeile aus der übergeordneten Tabelle gelöscht wird, werden die entsprechenden Zeilen aus der verweisenden Tabelle gelöscht.Corresponding rows are deleted from the referencing table if that row is deleted from the parent table.

SET NULLSET NULL
Alle Werte, aus denen sich der Fremdschlüssel zusammensetzt, werden auf NULL festgelegt, wenn die entsprechende Zeile in der übergeordneten Tabelle gelöscht wird.All the values that make up the foreign key are set to NULL when the corresponding row in the parent table is deleted. Die Fremdschlüsselspalten müssen NULL-Werte zulassen, um diese Einschränkung auszuführen.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
Alle Werte, aus denen sich der Fremdschlüssel zusammensetzt, werden auf die Standardwerte festgelegt, wenn die entsprechende Zeile in der übergeordneten Tabelle gelöscht wird.All the values that comprise the foreign key are set to their default values when the corresponding row in the parent table is deleted. Alle Fremdschlüsselspalten müssen Standarddefinitionen aufweisen, damit diese Einschränkung ausgeführt wird.For this constraint to execute, all foreign key columns must have default definitions. Wenn eine Spalte NULL-Werte zulässt, und es ist kein expliziter Standardwert festgelegt, wird NULL als der implizite Standardwert für die Spalte verwendet.If a column is nullable and there is no explicit default value set, NULL becomes the implicit default value of the column.

Geben Sie CASCADE nicht an, wenn die Tabelle in eine Mergeveröffentlichung einbezogen werden soll, bei der logische Datensätze verwendet werden.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. Weitere Informationen zu logischen Datensätzen finden Sie unter Gruppieren von Änderungen an verknüpften Zeilen mithilfe von logischen Datensätzen.For more information about logical records, see Group Changes to Related Rows with Logical Records.

ON DELETE CASCADE kann nicht definiert werden, wenn für ON DELETE bereits ein INSTEAD OF-Trigger für die geänderte Tabelle vorhanden ist.ON DELETE CASCADE cannot be defined if an INSTEAD OF trigger ON DELETE already exists on the table that is being altered.

In der Datenbank AdventureWorks2012AdventureWorks2012 verfügt die Tabelle ProductVendor beispielsweise über eine referenzielle Beziehung zu der Tabelle Vendor.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table. Der ProductVendor.VendorID-Fremdschlüssel verweist dabei auf den Vendor.VendorID-Primärschlüssel.The ProductVendor.VendorID foreign key references the Vendor.VendorID primary key.

Wenn eine DELETE-Anweisung für eine Zeile in der Vendor-Tabelle ausgeführt wird, und eine ON DELETE CASCADE-Aktion für ProductVendor.VendorID festgelegt ist, sucht Datenbank-EngineDatabase Engine nach mindestens einer abhängigen Zeile in der ProductVendor-Tabelle.If a DELETE statement is executed on a row in the Vendor table and an ON DELETE CASCADE action is specified for ProductVendor.VendorID, the Datenbank-EngineDatabase Engine checks for one or more dependent rows in the ProductVendor table. Sind abhängige Zeilen vorhanden, werden zusätzlich zur Zeile, auf die in der Vendor-Tabelle verwiesen wird, die abhängigen Zeilen in der ProductVendor-Tabelle gelöscht.If any exist, the dependent rows in the ProductVendor table will be deleted, in addition to the row referenced in the Vendor table.

Ist hingegen NO ACTION angegeben, löst Datenbank-EngineDatabase Engine einen Fehler aus und führt ein Rollback für die Löschaktion der Vendor-Zeile aus, wenn in der ProductVendor-Tabelle mindestens eine Zeile vorhanden ist, die auf diese Zeile verweist.Conversely, if NO ACTION is specified, the Datenbank-EngineDatabase Engine raises an error and rolls back the delete action on the Vendor row when there is at least one row in the ProductVendor table that references it.

ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
Gibt an, welche Aktion für eine Zeile der geänderten Tabelle ausgeführt werden soll, wenn diese Zeile eine referenzielle Beziehung hat und die Zeile, auf die verwiesen wird, in der übergeordneten Tabelle aktualisiert wird.Specifies what action happens to rows in the table altered when those rows have a referential relationship and the referenced row is updated in the parent table. Der Standardwert ist NO ACTION.The default is NO ACTION.

NO ACTIONNO ACTION
Datenbank-EngineDatabase Engine löst einen Fehler aus, und für die Updateaktion der Zeile in der übergeordneten Tabelle wird ein Rollback ausgeführt.The Datenbank-EngineDatabase Engine raises an error, and the update action on the row in the parent table is rolled back.

CASCADECASCADE
Wenn diese Zeile in der übergeordneten Tabelle aktualisiert wird, werden die entsprechenden Zeilen in der verweisenden Tabelle aktualisiert.Corresponding rows are updated in the referencing table when that row is updated in the parent table.

SET NULLSET NULL
Alle Werte, aus denen sich der Fremdschlüssel zusammensetzt, werden auf NULL festgelegt, wenn die entsprechende Zeile in der übergeordneten Tabelle aktualisiert wird.All the values that make up the foreign key are set to NULL when the corresponding row in the parent table is updated. Die Fremdschlüsselspalten müssen NULL-Werte zulassen, um diese Einschränkung auszuführen.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
Alle Werte, aus denen sich der Fremdschlüssel zusammensetzt, werden auf die Standardwerte festgelegt, wenn die entsprechende Zeile in der übergeordneten Tabelle aktualisiert wird.All the values that make up the foreign key are set to their default values when the corresponding row in the parent table is updated. Alle Fremdschlüsselspalten müssen Standarddefinitionen aufweisen, damit diese Einschränkung ausgeführt wird.For this constraint to execute, all foreign key columns must have default definitions. Wenn eine Spalte NULL-Werte zulässt, und es ist kein expliziter Standardwert festgelegt, wird NULL als der implizite Standardwert für die Spalte verwendet.If a column is nullable, and there is no explicit default value set, NULL becomes the implicit default value of the column.

Geben Sie CASCADE nicht an, wenn die Tabelle in eine Mergeveröffentlichung einbezogen werden soll, bei der logische Datensätze verwendet werden.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. Weitere Informationen zu logischen Datensätzen finden Sie unter Gruppieren von Änderungen an verknüpften Zeilen mithilfe von logischen Datensätzen.For more information about logical records, see Group Changes to Related Rows with Logical Records.

ON UPDATE CASCADE, SET NULL oder SET DEFAULT können nicht definiert werden, wenn für ON UPDATE schon ein INSTEAD OF-Trigger für die Tabelle vorhanden ist, die geändert wird.ON UPDATE CASCADE, SET NULL, or SET DEFAULT cannot be defined if an INSTEAD OF trigger ON UPDATE already exists on the table that is being altered.

In der Datenbank AdventureWorks2012AdventureWorks2012 verfügt die Tabelle ProductVendor beispielsweise über eine referenzielle Beziehung zu der Tabelle Vendor.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table. Der ProductVendor.VendorID-Fremdschlüssel verweist dabei auf den Vendor.VendorID-Primärschlüssel.The ProductVendor.VendorID foreign key references the Vendor.VendorID primary key.

Wenn eine UPDATE-Anweisung für eine Zeile in der Vendor-Tabelle ausgeführt wird, und eine ON UPDATE CASCADE-Aktion für ProductVendor.VendorID festgelegt ist, sucht Datenbank-EngineDatabase Engine nach mindestens einer abhängigen Zeile in der ProductVendor-Tabelle.If an UPDATE statement is executed on a row in the Vendor table and an ON UPDATE CASCADE action is specified for ProductVendor.VendorID, the Datenbank-EngineDatabase Engine checks for one or more dependent rows in the ProductVendor table. Sind abhängige Zeilen vorhanden, werden zusätzlich zur Zeile, auf die in der Vendor-Tabelle verwiesen wird, die abhängigen Zeilen in der ProductVendor-Tabelle aktualisiert.If any exist, the dependent row in the ProductVendor table will be updated, as well as the row referenced in the Vendor table.

Ist hingegen NO ACTION angegeben, löst Datenbank-EngineDatabase Engine einen Fehler aus und führt für die Updateaktion der Vendor-Zeile einen Rollback aus, wenn in der ProductVendor-Tabelle mindestens eine Zeile vorhanden ist, die auf diese Zeile verweist.Conversely, if NO ACTION is specified, the Datenbank-EngineDatabase Engine raises an error and rolls back the update action on the Vendor row when there is at least one row in the ProductVendor table that references it.

NOT FOR REPLICATIONNOT FOR REPLICATION
Gilt für: SQL Server 2008SQL Server 2008 und höher.Applies to: SQL Server 2008SQL Server 2008 and later.

Kann für FOREIGN KEY- und CHECK-Einschränkungen festgelegt werden.Can be specified for FOREIGN KEY constraints and CHECK constraints. Wenn diese Klausel für eine Einschränkung angegeben wird, wird die Einschränkung nicht erzwungen, wenn Replikations-Agents Einfüge-, Update- oder Löschvorgänge ausführen.If this clause is specified for a constraint, the constraint is not enforced when replication agents perform insert, update, or delete operations.

CONNECTION: Gibt das Paar von Knotentabellen an, das die angegebene Edgeeinschränkung verbinden darf.CONNECTION Specifies the pair of node tables that the given edge constraint is allowed to connect. ON DELETE: legt fest, was mit den Zeilen in der Edgetabelle geschieht, wenn die Knoten, die in dieser Edgetabelle über einen Edge verbunden waren, gelöscht werden.ON DELETE specifies what happens to the rows in the edge table, when the nodes which were connected via the edge(s) in this edge table are deleted.

DEFAULTDEFAULT
Gibt den Standardwert für die Spalte an.Specifies the default value for the column. DEFAULT-Definitionen können verwendet werden, um Werte für eine neue Spalte in den vorhandenen Datenzeilen bereitzustellen.DEFAULT definitions can be used to provide values for a new column in the existing rows of data. DEFAULT-Definitionen können nicht zu Spalten mit timestamp-Datentyp, IDENTITY-Eigenschaft, vorhandener DEFAULT-Definition oder gebundenem Standardwert hinzugefügt werden.DEFAULT definitions cannot be added to columns that have a timestamp data type, an IDENTITY property, an existing DEFAULT definition, or a bound default. Wenn die Spalte bereits einen Standardwert hat, muss dieser gelöscht werden, bevor der neue Standardwert hinzugefügt werden kann.If the column has an existing default, the default must be dropped before the new default can be added. Wenn ein Standardwert für einen benutzerdefinierten Spaltentyp angegeben wird, sollte dieser Typ eine implizite Konvertierung von constant_expression in den benutzerdefinierten Typ unterstützen.If a default value is specified for a user-defined type column, the type should support an implicit conversion from constant_expression to the user-defined type. Um die Kompatibilität mit früheren Versionen von SQL ServerSQL Server aufrechtzuerhalten, ist es möglich, einer DEFAULT-Definition einen Einschränkungsnamen zuzuweisen.To maintain compatibility with earlier versions of SQL ServerSQL Server, a constraint name can be assigned to a DEFAULT.

constant_expressionconstant_expression
Ein Literalwert, ein NULL-Wert oder eine Systemfunktion, der bzw. die als Standardwert für die Spalte verwendet wird.Is a literal value, a NULL, or a system function that is used as the default column value. Wenn constant_expression zusammen mit einer Spalte verwendet wird, die als benutzerdefinierter Datentyp von MicrosoftMicrosoft .NET Framework.NET Framework definiert ist, muss die Implementierung des Datentyps eine implizite Konvertierung von constant_expression in den benutzerdefinierten Datentyp unterstützen.If constant_expression is used in conjunction with a column defined to be of a MicrosoftMicrosoft .NET Framework.NET Framework user-defined type, the implementation of the type must support an implicit conversion from the constant_expression to the user-defined type.

FOR columnFOR column
Gibt die einer DEFAULT-Definition auf Tabellenebene zugeordnete Spalte an.Specifies the column associated with a table-level DEFAULT definition.

WITH VALUESWITH VALUES
Beim Hinzufügen einer Spalte UND einer DEFAULT-Beschränkung wird, wenn die Spalte NULL-Werte mit WITH VALUES erlaubt, für bestehende Zeilen der Wert der neuen Spalte auf den in DEFAULT constant_expression angegebenen Wert gesetzt.When adding a column AND a DEFAULT constraint, if the column allows NULLS using WITH VALUES will, for existing rows, set the new column's value to the value given in DEFAULT constant_expression. Wenn die hinzugefügte Spalte NULL-Werte nicht zulässt, wird der Wert der Spalte immer auf den im DEFAULT constant expression angegebenen Wert gesetzt.If the column being added does not allow NULLS, for existing rows, the column's value will always be set to the value given in the DEFAULT constant expression. Ab SQL Server 2012 kann dies auch ein Metadatenvorgang sein Hinzufügen von NOT NULL-Spalten als Onlinevorgang.Starting in SQL Server 2012 this may be a meta data operation adding-not-null-columns-as-an-online-operation. Wenn dieser verwendet wird, hat dies keine Auswirkung wenn die verknüpfte Spalte ist nicht ebenfalls hinzugefügt wird.If this is used when the related column isn't also being added then it has no effect.

CHECKCHECK
Eine Einschränkung, die Domänenintegrität erzwingt, indem die möglichen Eingabewerte für eine oder mehrere Spalten beschränkt wird.Is a constraint that enforces domain integrity by limiting the possible values that can be entered into a column or columns.

logical_expressionlogical_expression
Ein logischer Ausdruck, der in einer CHECK-Einschränkung verwendet wird und TRUE oder FALSE zurückgibt.Is a logical expression used in a CHECK constraint and returns TRUE or FALSE. Werden die CHECK-Einschränkungen zusammen mit logical_expression verwendet, kann nicht auf eine andere Tabelle, jedoch auf andere Spalten in derselben Tabelle für dieselbe Zeile verwiesen werden.logical_expression used with CHECK constraints cannot reference another table but can reference other columns in the same table for the same row. Der Ausdruck kann keinen Verweis auf einen Aliasdatentyp enthalten.The expression cannot reference an alias data type.

BemerkungenRemarks

Wenn FOREIGN KEY- oder CHECK-Einschränkungen hinzugefügt werden, werden alle vorhandenen Daten auf Einschränkungsverletzungen überprüft, es sei denn, die WITH NOCHECK-Option wurde festgelegt.When FOREIGN KEY or CHECK constraints are added, all existing data is verified for constraint violations unless the WITH NOCHECK option is specified. Bei Verletzungen schlägt die ALTER TABLE-Anweisung fehl, und ein Fehler wird zurückgegeben.If any violations occur, ALTER TABLE fails and an error is returned. Wenn eine neue PRIMARY KEY- oder UNIQUE-Einschränkung zu einer vorhandenen Spalte hinzugefügt wird, müssen die Daten in der/den Spalte(n) eindeutig sein.When a new PRIMARY KEY or UNIQUE constraint is added to an existing column, the data in the column or columns must be unique. Wenn doppelte Werte gefunden werden, schlägt die ALTER TABLE-Anweisung fehl.If duplicate values are found, ALTER TABLE fails. Die WITH NOCHECK-Option hat keine Auswirkungen, wenn PRIMARY KEY- oder UNIQUE-Einschränkungen hinzugefügt werden.The WITH NOCHECK option has no effect when PRIMARY KEY or UNIQUE constraints are added.

Jede PRIMARY KEY- und UNIQUE-Einschränkung generiert einen Index.Each PRIMARY KEY and UNIQUE constraint generates an index. Die Anzahl der UNIQUE- und PRIMARY KEY-Einschränkungen darf nicht dazu führen, dass die Anzahl der Indizes der Tabelle 999 nicht gruppierte Indizes und 1 gruppierten Index übersteigt.The number of UNIQUE and PRIMARY KEY constraints cannot cause the number of indexes on the table to exceed 999 nonclustered indexes and 1 clustered index. FOREIGN KEY-Einschränkungen generieren nicht automatisch einen Index.Foreign key constraints do not automatically generate an index. Fremdschlüsselspalten werden jedoch häufig in Joinkriterien in Abfragen verwendet, indem die Übereinstimmungen zwischen der oder den Spalten in der FOREIGN KEY-Einschränkung einer Tabelle und der oder den Spalten eines Primärschlüssels oder eines eindeutigen Schlüssels in der anderen Tabelle ermittelt werden.However, foreign key columns are frequently used in join criteria in queries by matching the column or columns in the foreign key constraint of one table with the primary or unique key column or columns in the other table. Ein Index für die Fremdschlüsselspalte ermöglicht Datenbank-EngineDatabase Engine, die verbundenen Daten in der Fremdschlüsseltabelle schnell zu finden.An index on the foreign key columns enables the Datenbank-EngineDatabase Engine to quickly find related data in the foreign key table.

BeispieleExamples

Beispiele finden Sie unter ALTER TABLE (Transact-SQL).For examples, see ALTER TABLE (Transact-SQL).

Weitere InformationenSee Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)