Het schema van een systeemtijd-tabel wijzigen
Van toepassing op: SQL Server 2016 (13.x) en latere versies
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Gebruik de instructie ALTER TABLE
om een kolom toe te voegen, te wijzigen of te verwijderen.
Opmerkingen
CONTROL
machtiging voor huidige en geschiedenistabellen is vereist om het schema van de tijdelijke tabel te wijzigen.
Tijdens een ALTER TABLE
-bewerking houdt het systeem een schemavergrendeling op beide tabellen.
De opgegeven schemawijziging wordt op de juiste wijze doorgegeven aan de geschiedenistabel (afhankelijk van het type wijziging).
Het toevoegen van varchar(max), nvarchar(max), varbinary(max) of XML-kolommen met standaardinstellingen, is een updategegevensbewerking op alle edities van SQL Server.
Als de rijgrootte na het toevoegen van kolommen de limiet voor rijgrootte overschrijdt, kunnen nieuwe kolommen niet online worden toegevoegd.
Zodra u een tabel met een nieuwe NOT NULL
kolom hebt uitgebreid, kunt u overwegen om de standaardbeperking voor de geschiedenistabel te verwijderen, omdat in het systeem automatisch alle kolommen in die tabel worden ingevuld.
De onlineoptie (WITH (ONLINE = ON
) heeft geen effect op ALTER TABLE ALTER COLUMN
met tijdelijke tabellen.
ALTER
kolom wordt niet online uitgevoerd, ongeacht welke waarde is opgegeven voor ONLINE
optie.
U kunt ALTER COLUMN
gebruiken om de eigenschap IsHidden
voor periodekolommen te wijzigen.
U kunt geen directe ALTER
gebruiken voor de volgende schemawijzigingen. Voor deze typen wijzigingen stelt u SYSTEM_VERSIONING = OFF
in.
- Een berekende kolom toevoegen
- Een
IDENTITY
kolom toevoegen - Een
SPARSE
kolom toevoegen of bestaande kolom wijzigen inSPARSE
wanneer de geschiedenistabel is ingesteld opDATA_COMPRESSION = PAGE
ofDATA_COMPRESSION = ROW
. Dit is de standaardinstelling voor de geschiedenistabel. - Een
COLUMN_SET
toevoegen - Een
ROWGUIDCOL
kolom toevoegen of bestaande kolom wijzigen zodat dezeROWGUIDCOL
- Een
NULL
kolom wijzigen inNOT NULL
als de kolom null-waarden bevat in de huidige of geschiedenistabel
Voorbeelden
A. Het schema van een tijdelijke tabel wijzigen
Hier volgen enkele voorbeelden die het schema van de tijdelijke tabel wijzigen.
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;
B. Kolommen voor perioden toevoegen met behulp van de HIDDEN-vlag
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
U kunt ALTER COLUMN <period_column> DROP HIDDEN
gebruiken om de verborgen vlag op een periodekolom te wissen.
C. Het schema wijzigen met SYSTEM_VERSIONING ingesteld op UIT
In het volgende voorbeeld ziet u hoe u het schema wijzigt waarin het instellen van SYSTEM_VERSIONING = OFF
nog steeds vereist is (het toevoegen van een IDENTITY
kolom). In dit voorbeeld wordt de controle van gegevensconsistentie uitgeschakeld. Deze controle is niet nodig wanneer de schemawijziging binnen een transactie wordt aangebracht, omdat er geen gelijktijdige gegevenswijzigingen kunnen optreden.
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;
Verwante inhoud
- tijdelijke tabellen
- Aan de slag met tijdelijke tabellen met systeemversies
- Beheer het bewaren van historische gegevens in systeemversiebeheerde temporale tabellen
- Systeem-versiebeheer tijdtabellen met geheugen-geoptimaliseerde tabellen
- ALTER TABLE (Transact-SQL)
- een systeem-versiebeheerde, tijdgebonden tabel maken
- Gegevens wijzigen in een systeemversie tijdtabel
- Query uitvoeren op gegevens in een systeemgeversioneerde temporale tabel
- systeemversiebeheer op een tijdelijke tabel met systeemversies stoppen