Mengubah skema tabel temporal versi sistem
Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Database Azure SQL Managed Instance yang lebih baru
ALTER TABLE
Gunakan pernyataan untuk menambahkan, mengubah, atau menghapus kolom.
Keterangan
CONTROL
izin pada tabel saat ini dan riwayat diperlukan untuk mengubah skema tabel temporal.
ALTER TABLE
Selama operasi, sistem memegang kunci skema pada kedua tabel.
Perubahan skema yang ditentukan disebarkan ke tabel riwayat dengan tepat (tergantung pada jenis perubahan).
Menambahkan kolom varchar(max), nvarchar(max), varbinary(max) atau XML dengan default, adalah operasi data pembaruan pada semua edisi SQL Server.
Jika ukuran baris setelah penambahan kolom melebihi batas ukuran baris, kolom baru tidak dapat ditambahkan 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. ALTER
kolom tidak dilakukan sebagai online, terlepas dari nilai mana yang ditentukan untuk ONLINE
opsi.
Anda dapat menggunakan ALTER COLUMN
untuk mengubah IsHidden
properti untuk kolom titik.
Anda tidak dapat menggunakan langsung ALTER
untuk perubahan skema berikut. Untuk jenis perubahan ini, atur SYSTEM_VERSIONING = OFF
.
- Menambahkan kolom komputasi
IDENTITY
Menambahkan kolomSPARSE
Menambahkan kolom atau mengubah kolom yang ada menjadiSPARSE
saat tabel riwayat diatur keDATA_COMPRESSION = PAGE
atauDATA_COMPRESSION = ROW
, yang merupakan default untuk tabel riwayat.- Menambahkan
COLUMN_SET
ROWGUIDCOL
Menambahkan kolom atau mengubah kolom yang sudah ada menjadiROWGUIDCOL
- Mengubah kolom menjadi
NULL
NOT NULL
jika kolom berisi nilai null dalam tabel saat ini atau riwayat
Contoh
J. Mengubah skema tabel temporal
Berikut adalah beberapa contoh yang mengubah skema tabel temporal.
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. Menambahkan kolom titik menggunakan bendera 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 bendera tersembunyi pada kolom titik.
C. Mengubah skema dengan SYSTEM_VERSIONING diatur ke NONAKTIF
Contoh berikut menunjukkan perubahan skema di mana pengaturan SYSTEM_VERSIONING = OFF
masih diperlukan (menambahkan IDENTITY
kolom). Contoh ini menonaktifkan pemeriksaan konsistensi data. Pemeriksaan ini tidak perlu ketika perubahan skema dilakukan dalam transaksi karena tidak ada perubahan data bersamaan yang dapat terjadi.
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;
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