Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a: SQL Server 2016 (13.x) y versiones posteriores
Azure SQL Database
Azure SQL Managed Instance
Base de datos SQL en Microsoft Fabric
Use la instrucción ALTER TABLE para agregar, modificar o quitar una columna.
Remarks
Necesitas CONTROL permiso en las tablas de corriente y de historial para cambiar el esquema de una tabla temporal.
Durante una operación ALTER TABLE, el sistema mantiene un bloqueo de esquema en ambas tablas.
El Motor de base de datos propaga el cambio de esquema a la tabla de historial, dependiendo del tipo de cambio.
Añadir columnas varchar(max),nvarchar(max), varbinary(max) o xml con valores predeterminados es una operación de actualización de datos en todas las ediciones de SQL Server.
Si el tamaño de fila tras añadir una columna supera el límite de fila, no puedes añadir nuevas columnas online.
Una vez que amplía una tabla con una nueva columna NOT NULL, considere la posibilidad de quitar la restricción predeterminada de la tabla de historial, ya que todas las columnas de esa tabla las rellena el sistema automáticamente.
La opción en línea (WITH (ONLINE = ON) no tiene ningún efecto sobre ALTER TABLE ALTER COLUMN con las tablas temporales. La ALTER operación de columna no se ejecuta en línea, independientemente del valor que especifiques para la ONLINE opción.
Puede usar ALTER COLUMN para cambiar la propiedad IsHidden de las columnas de periodo.
No se puede usar ALTER directamente para los siguientes cambios de esquema. Para estos tipos de cambios, establezca SYSTEM_VERSIONING = OFF.
- Agregar una columna calculada
- Adición de una columna
IDENTITY - Añadir una
SPARSEcolumna o cambiar una columna existente para que seaSPARSEcuando la tabla de historial está configurada enDATA_COMPRESSION = PAGEoDATA_COMPRESSION = ROW, que es el valor predeterminado de la tabla de historial. - Agregar
COLUMN_SET - Añadir una
ROWGUIDCOLcolumna o cambiar una columna existente por serROWGUIDCOL - Cambio de una columna
NULLaNOT NULLsi la columna contiene valores null en la tabla actual o la de historial
Examples
A. Cambio del esquema de una tabla temporal
Aquí tienes algunos ejemplos que cambian el esquema de una tabla temporal.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName VARCHAR (100);
ALTER TABLE dbo.Department
ADD WebAddress NVARCHAR (255)
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com' NOT NULL;
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
B. Añada columnas de periodo mediante el indicador HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Puede usar ALTER COLUMN <period_column> DROP HIDDEN para borrar la marca oculta en una columna de periodo.
C. Cambio del esquema con SYSTEM_VERSIONING establecido en OFF
El siguiente ejemplo muestra cómo cambiar el esquema cuando aún necesitas configurar SYSTEM_VERSIONING = OFF (añadir una IDENTITY columna). Este ejemplo deshabilita la comprobación de coherencia de datos. Esta comprobación es innecesaria cuando se realiza el cambio de esquema dentro de una transacción, porque no pueden producirse cambios concurrentes en los datos.
BEGIN TRANSACTION;
ALTER TABLE [dbo].[CompanyLocation]
SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation]
ADD Cntr INT IDENTITY (1, 1);
ALTER TABLE [dbo].[CompanyLocationHistory]
ADD Cntr INT
CONSTRAINT DF_Cntr DEFAULT 0 NOT NULL;
ALTER TABLE [dbo].[CompanyLocation]
SET (
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT TRANSACTION;
Contenido relacionado
- Tablas temporales
- Primeros pasos con las tablas temporales con control de versiones del sistema
- Administrar la retención de datos históricos en las tablas temporales con versiones del sistema
- Tablas temporales versionadas por el sistema con tablas optimizadas para la memoria
- ALTER TABLE (Transact-SQL)
- Creación de una tabla temporal con versión del sistema
- Modificar datos en una tabla temporal versionada por el sistema
- Consultar datos en una tabla temporal versionada por el sistema
- Desactivar el control de versiones del sistema en una tabla temporal con control de versiones del sistema