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
CONTROL oprávnění k aktuálním tabulkám a tabulkám historie se vyžaduje ke změně schématu dočasné tabulky.
Během ALTER TABLE operace systém drží zámek schématu na obou tabulkách.
Zadaná změna schématu se odpovídajícím způsobem rozšíří do tabulky historie (v závislosti na typu změny).
Přidání varchar(max), nvarchar(max), varbinary(max) nebo XML sloupců s výchozími nastaveními, je operace aktualizace dat ve všech edicích SQL Serveru.
Pokud velikost řádku po přidání sloupce překročí limit velikosti řádku, není možné přidat nové sloupce online.
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.
ALTER sloupec nefunguje jako online bez ohledu na to, jaká hodnota byla zadána 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, pokud je tabulka historie nastavena naDATA_COMPRESSION = PAGEneboDATA_COMPRESSION = ROW, což je výchozí možnost pro tabulku 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
Tady je několik příkladů, které mění schéma dočasné tabulky.
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. 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 změnu schématu, ve kterém je stále vyžadováno nastavení SYSTEM_VERSIONING = OFF (přidání sloupce IDENTITY). Tento příklad zakáže kontrolu konzistence dat. Tato kontrola není nutná, pokud je změna schématu provedena v rámci transakce, protože nedochází k žádným souběžným změnám 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 NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Související obsah
- temporální tabulky
- Začínáme se systémově verzovanými časovými tabulkami
- Správa uchovávání historických dat v systémově verziovaných časových tabulkách
- Systémem verzované dočasné tabulky s tabulkami optimalizovanými pro paměť
- ZMĚNIT TABULKU (Transact-SQL)
- Vytvoření časové tabulky verzované systémem
- Úprava dat v systémově verzované časové tabulce
- Dotazování dat v časově verzované systémové tabulce
- zastavení verzování systému na systémově verzované časové tabulce