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.
Contoh
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.mycompany.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Keterangan yang penting
Izin CONTROL 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 akan menjadi 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 NOT NULL baru, pertimbangkan untuk menghilangkan batasan default pada tabel riwayat karena semua kolom dalam tabel tersebut secara otomatis diisi oleh sistem.
Opsi online (
WITH (ONLINE = ON
) tidak berpengaruh padaALTER TABLE ALTER COLUMN
dengan tabel temporal versi sistem. Kolom ALTER tidak dilakukan sebagai online, terlepas dari nilai mana yang ditentukan untuk opsi ONLINE.Anda dapat menggunakan
ALTER COLUMN
untuk mengubahIsHidden
properti untuk kolom titik.Anda tidak dapat menggunakan langsung
ALTER
untuk perubahan skema berikut. Untuk jenis perubahan ini, aturSYSTEM_VERSIONING = OFF
.- Menambahkan kolom komputasi
- Menambahkan kolom IDENTITY
- Menambahkan kolom SPARSE atau mengubah kolom yang ada menjadi SPARSE saat tabel riwayat diatur ke
DATA_COMPRESSION = PAGE
atauDATA_COMPRESSION = ROW
, yang merupakan default untuk tabel riwayat. - Menambahkan COLUMN_SET
- Menambahkan kolom ROWGUIDCOL atau mengubah kolom yang ada menjadi ROWGUIDCOL
- Mengubah kolom NULL menjadi NOT NULL jika kolom berisi nilai null dalam tabel riwayat atau saat ini
Contoh berikut menunjukkan perubahan skema di mana pengaturan SYSTEM_VERSIONING = OFF
masih diperlukan (menambahkan kolom IDENTITY ). 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;
Langkah berikutnya
- Tabel Temporal
- Mulai menggunakan Tabel Temporal Versi Sistem
- Mengelola Retensi Data Historis dalam Tabel Temporal Versi Sistem
- Tabel Temporal Versi Sistem dengan Tabel yang Dioptimalkan Memori
- ALTER TABLE (Transact-SQL)
- Membuat Tabel Temporal Versi Sistem
- Memodifikasi Data dalam Tabel Temporal Versi Sistem
- Mengkueri Data dalam Tabel Temporal Versi Sistem
- Menghentikan Penerapan Versi Sistem pada Tabel Temporal Versi Sistem
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk