Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Pomocí příkazu ALTER TABLE můžete přidat, změnit nebo odebrat sloupec.
Remarks
K CONTROL změně schématu časové tabulky potřebujete povolení k aktuální a historické tabulce.
Během ALTER TABLE operace systém drží zámek schématu na obou tabulkách.
Database Engine propaguje změnu schématu do tabulky historie v závislosti na typu změny.
Přidání sloupců varchar(max), nvarchar(max), varbinary(max) nebo xml s výchozími hodnotami je operace aktualizace dat ve všech edicích SQL Server.
Pokud velikost řádku po přidání sloupce překročí limit velikosti řádku, nelze online přidávat nové sloupce.
Jakmile rozšíříte tabulku o nový sloupec NOT NULL, zvažte zrušení výchozího omezení tabulky historie, protože systém automaticky naplní všechny sloupce v této tabulce.
Online možnost (WITH (ONLINE = ON) nemá žádný vliv na ALTER TABLE ALTER COLUMN s dočasnými tabulkami. Operace se sloupcem ALTER se nespustí online bez ohledu na hodnotu, kterou zadáte pro volbu ONLINE.
Pomocí ALTER COLUMN můžete změnit vlastnost IsHidden pro sloupce období.
Přímé ALTER nemůžete použít pro následující změny schématu. U těchto typů změn nastavte SYSTEM_VERSIONING = OFF.
- Přidání počítaného sloupce
- Přidání sloupce
IDENTITY - Přidání sloupce
SPARSEnebo změna existujícího sloupce naSPARSE, když je tabulka historie nastavena naDATA_COMPRESSION = PAGEneboDATA_COMPRESSION = ROW, což je výchozí nastavení tabulky historie. - Přidání
COLUMN_SET - Přidání sloupce
ROWGUIDCOLnebo změna existujícího sloupce naROWGUIDCOL - Změna sloupce
NULLnaNOT NULL, pokud sloupec obsahuje hodnoty null v aktuální tabulce nebo v tabulce historie
Examples
A. Změna schématu dočasné tabulky
Zde je několik příkladů, které mění schéma časové tabulky.
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. Přidání sloupců období pomocí příznaku HIDDEN
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Pomocí ALTER COLUMN <period_column> DROP HIDDEN můžete vymazat skrytý příznak ve sloupci období.
C. Změna schématu s SYSTEM_VERSIONING nastavenou na VYPNUTO
Následující příklad ukazuje, jak změnit schéma, když je stále potřeba nastavit SYSTEM_VERSIONING = OFF (přidat sloupec IDENTITY ). Tento příklad zakáže kontrolu konzistence dat. Tato kontrola není nutná, pokud provedete změnu schématu v rámci transakce, protože nemohou nastat žádné současné změny dat.
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;
Související obsah
- temporální tabulky
- Začínáme se systémově verzovanými temporálními tabulkami
- Správa uchovávání historických dat v systémově verzovaných časových tabulkách
- Systémově verzované časové tabulky s tabulkami optimalizovanými pro paměť
- ALTER TABLE (Transact-SQL)
- Vytvoření systémově verzované časové tabulky
- Úprava dat v systémově verzované časové tabulce
- Dotazování dat v časově verzované systémové tabulce
- Zastavení systémového verzování u systémově verzované časové tabulky