Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2016 (13.x) e versioni
successive database SQL di Azure
AzureSQL Managed Instance
SQL database in Microsoft Fabric
Usare l'istruzione ALTER TABLE per aggiungere, modificare o rimuovere una colonna.
Remarks
È necessaria l'autorizzazione CONTROL sulla tabella corrente e sulla tabella cronologica per modificare lo schema di una tabella temporale.
Durante un'operazione ALTER TABLE, il sistema mantiene un blocco dello schema su entrambe le tabelle.
Il motore di database propaga la modifica dello schema alla tabella storica, a seconda del tipo di modifica.
Aggiungere colonne varchar(max), nvarchar(max), varbinary(max) o xml con le impostazioni predefinite è un'operazione di aggiornamento dei dati su tutte le edizioni di SQL Server.
Se la dimensione della riga dopo aver aggiunto una colonna supera il limite di dimensione riga, non puoi aggiungere nuove colonne online.
Dopo aver esteso una tabella con una nuova colonna NOT NULL, eliminare il vincolo predefinito nella tabella di cronologia, poiché il sistema popola automaticamente tutte le colonne della tabella.
L'operazione online (WITH (ONLINE = ON) non influisce su ALTER TABLE ALTER COLUMN in caso di una tabella temporale. L'operazione ALTER a colonna non viene eseguita online, indipendentemente dal valore che specifichi per l'opzione ONLINE .
È possibile usare ALTER COLUMN per modificare la proprietà IsHidden per le colonne periodo.
Non è possibile usare ALTER direttamente per le seguenti modifiche dello schema. Per questi tipi di modifiche, impostare SYSTEM_VERSIONING = OFF.
- Aggiunta di una colonna calcolata
- Aggiunta di una colonna
IDENTITY - Aggiungere una colonna
SPARSEo modificare una colonna esistente inSPARSEquando la tabella di cronologia è impostata suDATA_COMPRESSION = PAGEoDATA_COMPRESSION = ROW, che è l'impostazione predefinita per la tabella di cronologia. - Aggiunta di un
COLUMN_SET - Aggiungere una
ROWGUIDCOLcolonna o cambiare una colonna esistente inROWGUIDCOL - Modifica di una colonna
NULLinNOT NULLse la colonna contiene valori null nella tabella corrente o nella cronologia
Examples
A. Modificare lo schema di una tabella temporale
Ecco alcuni esempi che modificano lo schema di una tabella temporale.
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. Aggiungere colonne periodo usando il flag HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
È possibile usare ALTER COLUMN <period_column> DROP HIDDEN per cancellare il flag nascosto in una colonna di periodo.
C. Modificare lo schema con SYSTEM_VERSIONING impostato su OFF
L'esempio seguente mostra come cambiare lo schema quando devi ancora impostare SYSTEM_VERSIONING = OFF (aggiungere una IDENTITY colonna). Questo esempio disabilita la verifica di coerenza dei dati. Questo controllo è inutile quando effettui la modifica dello schema all'interno di una transazione, perché non possono verificarsi cambiamenti di dati concorrenti.
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;
Contenuti correlati
- Tabelle temporali
- Inizia a utilizzare le tabelle temporali versionate dal sistema
- Gestire la conservazione dei dati storici nelle tabelle temporali versionate dal sistema
- Tabelle temporali versionate a livello di sistema con tabelle ottimizzate per la memoria
- ALTER TABLE (Transact-SQL)
- Creare una tabella temporale versionata dal sistema
- Modifica dei dati in una tabella temporale versionata dal sistema
- Interroga dati in una tabella temporale gestita dal sistema
- Disattiva il versionamento su una tabella temporale con versionamento di sistema