Formation
Module
Créer des tables, des vues et des objets temporaires - Training
Ce contenu fait partie du module Créer des tables, des vues et des objets temporaires.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour bénéficier des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
S’applique à : SQL Server 2016 (13.x) et versions ultérieures
Base de données Azure SQL
Azure SQL Managed Instance
Utilisez l’instruction ALTER TABLE
pour ajouter, modifier ou supprimer une colonne.
L’autorisationCONTROL
sur les tables actuelles et historiques est nécessaire pour modifier le schéma de la table temporelle.
Pendant une opération ALTER TABLE
, le système verrouille le schéma des deux tables.
La modification de schéma spécifiée est propagée à la table d’historique de manière appropriée (selon le type de modification).
L’ajout de varchar(max), nvarchar(max), varbinary(max) ou de colonnes XML avec des valeurs par défaut est une opération de mise à jour des données dans toutes les éditions de SQL Server.
Si la taille de ligne après l’ajout de colonne dépasse la limite, les nouvelles colonnes ne peuvent pas être ajoutées 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
n’est pas effectuée en ligne, quelle que soit la valeur spécifiée 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
.
IDENTITY
SPARSE
ou modification d’une colonne en SPARSE
lorsque la table historique est configurée sur DATA_COMPRESSION = PAGE
ou DATA_COMPRESSION = ROW
, qui est la valeur par défaut pour la table historique.COLUMN_SET
ROWGUIDCOL
ou modification d’une colonne en ROWGUIDCOL
NULL
en NOT NULL
si la colonne contient des valeurs Null dans la table active ou historiqueVoici quelques exemples illustrant comment modifier le schéma d’une table temporelle.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.example.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
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.
L’exemple suivant illustre la modification du schéma où le paramètre SYSTEM_VERSIONING = OFF
est toujours requis (ajout de la colonne IDENTITY
). Cet exemple désactive la vérification de la cohérence des données. Cette vérification n’est pas nécessaire lorsque la modification du schéma s’effectue dans une transaction, car aucune modification simultanée de données n’est possible.
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 NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Formation
Module
Créer des tables, des vues et des objets temporaires - Training
Ce contenu fait partie du module Créer des tables, des vues et des objets temporaires.