Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2016 (13.x) et versions ultérieures
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Utilisez l’instruction ALTER TABLE pour ajouter, modifier ou supprimer une colonne.
Remarks
Il faut CONTROL une autorisation sur les tables courante et historique pour modifier le schéma d’une table temporelle.
Lors d’une opération ALTER TABLE, le système conserve un verrou de schéma sur les deux tables.
Le Moteur de base de données propage le changement de schéma vers la table d’historique, selon le type de modification.
Ajouter des colonnes varchar(max),nvarchar(max), varbinary(max) ou xml avec les paramètres par défaut est une opération de mise à jour des données sur toutes les éditions de SQL Server.
Si la taille de la ligne après l’ajout d’une colonne dépasse la limite de taille de ligne, vous ne pouvez pas ajouter de nouvelles colonnes en ligne.
Lorsque vous ajoutez à une table une colonne NOT NULL, envisagez de supprimer la contrainte par défaut sur la table historique, car toutes les colonnes de cette table sont automatiquement renseignées par le système.
L’option en ligne (WITH (ONLINE = ON) n’a aucun effet sur ALTER TABLE ALTER COLUMN dans le cas d’une table temporelle. L’opération ALTER de colonne ne s’exécute pas en ligne, quelle que soit la valeur que vous spécifiez pour l’option ONLINE .
Vous pouvez utiliser ALTER COLUMN pour modifier la propriété IsHidden pour les colonnes de période.
Vous ne pouvez pas utiliser directement ALTER pour les modifications de schéma suivantes. Pour ces types de modifications, définissez SYSTEM_VERSIONING = OFF.
- Ajout d’une colonne calculée
- Ajout d'une colonne
IDENTITY - Ajouter une
SPARSEcolonne ou changer une colonne existante pour qu’elleSPARSEsoit lorsque la table d’historique est définie surDATA_COMPRESSION = PAGEouDATA_COMPRESSION = ROW, qui est la valeur par défaut de la table d’historique. - Ajout de
COLUMN_SET - Ajouter une
ROWGUIDCOLcolonne ou changer une colonne existante enROWGUIDCOL - Modification d’une colonne
NULLenNOT NULLsi la colonne contient des valeurs Null dans la table active ou historique
Examples
A. Modifier le schéma d’une table temporelle
Voici quelques exemples qui modifient le schéma d’une table temporelle.
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. Ajouter des colonnes de période à l’aide de l’indicateur HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Vous pouvez utiliser ALTER COLUMN <period_column> DROP HIDDEN pour effacer l’indicateur masqué sur une colonne de période.
C. Modifier le schéma avec SYSTEM_VERSIONING défini sur OFF
L’exemple suivant montre comment changer le schéma lorsque vous devez encore définir SYSTEM_VERSIONING = OFF (ajouter une IDENTITY colonne). Cet exemple désactive la vérification de la cohérence des données. Cette vérification est inutile lorsque vous effectuez le changement de schéma au sein d’une transaction, car aucun changement de données simultané ne peut se produire.
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;
Contenu connexe
- Tables temporelles
- Bien démarrer avec les tables temporelles avec versions gérées par le système
- Gérer la conservation des données historiques dans les tables temporelles versionnées par le système
- Tables temporelles à versionnement géré par le système avec tables optimisées en mémoire
- ALTER TABLE (Transact-SQL)
- Créer une table temporelle versionnée par le système
- Modifier des données dans une table temporelle avec version gérée par le système
- Interroger les données dans une table temporelle avec version gérée par le système
- Arrêter la gestion de versions par le système sur une table temporelle versionnée par le système