--- title: "ALTER TABLE (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "06/01/2018" ms.prod: sql ms.prod_service: "database-engine, sql-database, sql-data-warehouse, pdw" ms.component: "t-sql|statements" ms.reviewer: "" ms.suite: "sql" ms.technology: t-sql ms.tgt_pltfrm: "" ms.topic: "language-reference" f1_keywords: - "WAIT_AT_LOW_PRIORITY" - "ABORT_AFTER_WAIT" - "ABORT_AFTER_WAIT_TSQL" - "ALTER_TABLE_TSQL" - "ALTER TABLE" - "WAIT_AT_LOW_PRIORITY_TSQL" - "ALTER_COLUMN_TSQL" dev_langs: - "TSQL" helpviewer_keywords: - "columns [SQL Server], resizing" - "changing column size" - "MAXDOP index option, ALTER TABLE statement" - "table modifications [SQL Server], ALTER TABLE" - "ALTER TABLE statement" - "modifying tables" - "partitioned tables [SQL Server], lock escalation" - "resizing columns" - "removing columns" - "switching partitions" - "reassigning partitions" - "removing constraints" - "triggers [SQL Server], disabling" - "columns [SQL Server], adding" - "LOCK_ESCALATION option of ALTER TABLE" - "constraints [SQL Server], deleting" - "constraints [SQL Server], disabling" - "triggers [SQL Server], enabling" - "re-enabling constraints" - "index modifications [SQL Server]" - "disabling constraints" - "columns [SQL Server], removing" - "max degree of parallelism option" - "locking [SQL Server], tables" - "ONLINE option" - "disabling triggers" - "constraints [SQL Server], adding" - "deleting constraints" - "adding constraints" - "adding columns" - "SWITCH partitions" - "partitioned tables [SQL Server], switching" - "lock escalation [SQL Server], option of ALTER TABLE" - "constraints [SQL Server], enabling" - "dropping constraints" - "dropping columns" - "table changes [SQL Server]" ms.assetid: f1745145-182d-4301-a334-18f799d361d1 caps.latest.revision: 281 author: edmacauley ms.author: edmaca manager: craigg monikerRange: ">= aps-pdw-2016 || = azuresqldb-current || = azure-sqldw-latest || >= sql-server-2016 || = sqlallproducts-allversions" --- # ALTER TABLE (Transact-SQL) [!INCLUDE[tsql-appliesto-ss2008-all-md](../../includes/tsql-appliesto-ss2008-all-md.md)] Modifies a table definition by altering, adding, or dropping columns and constraints, reassigning and rebuilding partitions, or disabling or enabling constraints and triggers. [!INCLUDE[ssMIlimitation](../../includes/sql-db-mi-limitation.md)] ![Topic link icon](../../database-engine/configure-windows/media/topic-link.gif "Topic link icon") [Transact-SQL Syntax Conventions](../../t-sql/language-elements/transact-sql-syntax-conventions-transact-sql.md) ## Syntax ``` -- Syntax for SQL Server and Azure SQL Database ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name { ALTER COLUMN column_name { [ type_schema_name. ] type_name [ ( { precision [ , scale ] | max | xml_schema_collection } ) ] [ COLLATE collation_name ] [ NULL | NOT NULL ] [ SPARSE ] | { ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE | HIDDEN } | { ADD | DROP } MASKED [ WITH ( FUNCTION = ' mask_function ') ] } [ WITH ( ONLINE = ON | OFF ) ] | [ WITH { CHECK | NOCHECK } ] | ADD { | | | } [ ,...n ] | [ system_start_time_column_name datetime2 GENERATED ALWAYS AS ROW START [ HIDDEN ] [ NOT NULL ] [ CONSTRAINT constraint_name ] DEFAULT constant_expression [WITH VALUES] , system_end_time_column_name datetime2 GENERATED ALWAYS AS ROW END [ HIDDEN ] [ NOT NULL ] [ CONSTRAINT constraint_name ] DEFAULT constant_expression [WITH VALUES] , ] PERIOD FOR SYSTEM_TIME ( system_start_time_column_name, system_end_time_column_name ) | DROP [ { [ CONSTRAINT ] [ IF EXISTS ] { constraint_name [ WITH ( [ ,...n ] ) ] } [ ,...n ] | COLUMN [ IF EXISTS ] { column_name } [ ,...n ] | PERIOD FOR SYSTEM_TIME } [ ,...n ] | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT { ALL | constraint_name [ ,...n ] } | { ENABLE | DISABLE } TRIGGER { ALL | trigger_name [ ,...n ] } | { ENABLE | DISABLE } CHANGE_TRACKING [ WITH ( TRACK_COLUMNS_UPDATED = { ON | OFF } ) ] | SWITCH [ PARTITION source_partition_number_expression ] TO target_table [ PARTITION target_partition_number_expression ] [ WITH ( ) ] | SET ( [ FILESTREAM_ON = { partition_scheme_name | filegroup | "default" | "NULL" } ] | SYSTEM_VERSIONING = { OFF | ON [ ( HISTORY_TABLE = schema_name . history_table_name [, DATA_CONSISTENCY_CHECK = { ON | OFF } ] [, HISTORY_RETENTION_PERIOD = { INFINITE | number {DAY | DAYS | WEEK | WEEKS | MONTH | MONTHS | YEAR | YEARS } } ] ) ] } ) | REBUILD [ [PARTITION = ALL] [ WITH ( [ ,...n ] ) ] | [ PARTITION = partition_number [ WITH ( [ ,...n ] ) ] ] ] | | | } [ ; ] -- ALTER TABLE options ::= column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS ::= { MAXDOP = max_degree_of_parallelism | ONLINE = { ON | OFF } | MOVE TO { partition_scheme_name ( column_name ) | filegroup | "default" } } ::= { SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } ) } ::= { [ { ENABLE | DISABLE } FILETABLE_NAMESPACE ] [ SET ( FILETABLE_DIRECTORY = directory_name ) ] } ::= { SET ( REMOTE_DATA_ARCHIVE { = ON ( ) | = OFF_WITHOUT_DATA_RECOVERY ( MIGRATION_STATE = PAUSED ) | ( [, ...n] ) } ) } ::= { [ FILTER_PREDICATE = { null | table_predicate_function } , ] MIGRATION_STATE = { OUTBOUND | INBOUND | PAUSED } } ::= { SORT_IN_TEMPDB = { ON | OFF } | MAXDOP = max_degree_of_parallelism | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE} } | ONLINE = { ON [( ) ] | OFF } } ::= { WAIT_AT_LOW_PRIORITY ( MAX_DURATION =