Mengubah skema tabel temporal versi sistem
Berlaku untuk: SQL Server 2016 (13.x) dan database Azure SQL yang lebih baru Azure SQL Managed Instance
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
tabel temporal versi sistem. ALTER column 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 sudah ada menjadi ROWGUIDCOL
- Mengubah kolom NULL ke NOT NULL jika kolom berisi nilai null dalam tabel saat ini atau riwayat
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 System-Versioned
- Mengelola Retensi Data Historis dalam Tabel Temporal System-Versioned
- Tabel Temporal Versi Sistem dengan Tabel Memory-Optimized
- ALTER TABLE (Transact-SQL)
- Membuat Tabel Temporal System-Versioned
- Memodifikasi Data dalam Tabel Temporal System-Versioned
- Mengkueri Data dalam Tabel Temporal System-Versioned
- Menghentikan System-Versioning pada Tabel Temporal System-Versioned
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