Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
ALTER TABLE Gunakan pernyataan untuk menambahkan, mengubah, atau menghapus kolom.
Remarks
Anda memerlukan CONTROL izin pada tabel saat ini dan riwayat untuk mengubah skema tabel temporal.
ALTER TABLE Selama operasi, sistem memegang kunci skema pada kedua tabel.
Database Engine menyebarkan perubahan skema ke tabel riwayat, tergantung pada jenis perubahan.
Menambahkan kolom varchar(max), nvarchar(max), varbinary(max), atau xml dengan nilai default merupakan operasi pembaruan data pada semua edisi SQL Server.
Jika ukuran baris setelah menambahkan kolom melebihi batas ukuran baris, Anda tidak dapat menambahkan kolom baru secara online.
Setelah Anda memperluas tabel dengan kolom baru NOT NULL , pertimbangkan untuk menghilangkan batasan default pada tabel riwayat, karena sistem secara otomatis mengisi semua kolom dalam tabel tersebut.
Opsi online (WITH (ONLINE = ON) tidak berpengaruh pada ALTER TABLE ALTER COLUMN dengan tabel temporal. Operasi kolom ALTER tidak berjalan secara online, apa pun nilai yang Anda tentukan untuk opsi ONLINE.
Anda dapat menggunakan ALTER COLUMN untuk mengubah properti IsHidden untuk kolom periode.
Anda tidak dapat menggunakan langsung ALTER untuk perubahan skema berikut. Untuk jenis perubahan ini, atur SYSTEM_VERSIONING = OFF.
- Menambahkan kolom komputasi
-
IDENTITYMenambahkan kolom - Menambahkan
SPARSEkolom atau mengubah kolom yang sudah ada menjadiSPARSEketika tabel riwayat diatur keDATA_COMPRESSION = PAGEatauDATA_COMPRESSION = ROW, yang merupakan default untuk tabel riwayat. - Menambahkan
COLUMN_SET - Menambahkan kolom
ROWGUIDCOLatau mengubah kolom yang sudah ada menjadiROWGUIDCOL - Mengubah kolom menjadi
NULLNOT NULLjika kolom berisi nilai null dalam tabel saat ini atau riwayat
Examples
A. Mengubah skema tabel temporal
Berikut beberapa contoh yang mengubah skema tabel temporal.
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. Menambahkan kolom periode menggunakan tag TERSEMBUNYI
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Anda dapat menggunakan ALTER COLUMN <period_column> DROP HIDDEN untuk menghapus penanda tersembunyi pada kolom periode.
C. Mengubah skema dengan SYSTEM_VERSIONING diatur ke NONAKTIF
Contoh berikut menunjukkan cara mengubah skema saat Anda masih perlu mengatur SYSTEM_VERSIONING = OFF (menambahkan IDENTITY kolom). Contoh ini menonaktifkan pemeriksaan konsistensi data. Pemeriksaan ini tidak diperlukan saat Anda melakukan perubahan skema dalam transaksi, karena tidak ada perubahan data yang dapat terjadi secara bersamaan.
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;
Konten terkait
- tabel temporal
- Mulai menggunakan tabel temporal versi sistem
- Mengelola retensi data historis dalam tabel temporal versi sistem
- Tabel temporal versi sistem dengan tabel memori yang dioptimalkan
- ALTER TABLE (Transact-SQL)
- Membuat tabel temporal versi sistem
- Mengubah data dalam tabel temporal versi sistem
- Mengkueri data dalam tabel temporal versi sistem
- Menghentikan penerapan versi sistem pada tabel temporal versi sistem