Tabel ledger khusus tambahan
Berlaku untuk: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance
Tabel ledger khusus tambahan hanya INSERT
mengizinkan operasi pada tabel Anda, yang memastikan bahwa pengguna istimewa seperti administrator database tidak dapat mengubah data melalui operasi Bahasa Manipulasi Data tradisional. Tabel ledger khusus tambahan sangat ideal untuk sistem yang tidak memperbarui atau menghapus catatan data, seperti sistem kejadian dan manajemen informasi keamanan atau sistem blockchain tempat data perlu direplikasi dari blockchain ke database. Karena tidak ada operasi UPDATE
atau DELETE
pada tabel khusus tambahan, tabel riwayat yang sesuai tidak diperlukan, seperti halnya tabel ledger yang dapat diperbarui.
Anda dapat membuat tabel ledger khusus tambahan dengan menyebutkan argumen LEDGER = ON
dalam pernyataan BUAT TABEL (Transact-SQL) dan menyebutkan opsi APPEND_ONLY = ON
.
Penting
Setelah tabel dibuat sebagai tabel ledger, tabel tidak dapat dikembalikan ke tabel yang tidak memiliki fungsionalitas ledger. Oleh karena itu, penyerang tidak dapat menghapus kemampuan ledger secara sementara, membuat perubahan pada tabel, dan kemudian mengaktifkan kembali fungsionalitas ledger.
Skema tabel ledger khusus tambahkan
Tabel khusus tambahan harus memiliki kolom GENERATED ALWAYS berikut yang berisi metadata yang mencatat transaksi mana yang membuat perubahan pada tabel dan urutan operasi untuk memperbarui baris berdasarkan transaksi. Saat membuat tabel ledger khusus tambahan, kolom GENERATED ALWAYS
akan dibuat di tabel ledger Anda. Data ini berguna untuk tujuan forensik dalam memahami cara data dimasukkan seiring waktu.
Jika Anda tidak menyebutkan definisi kolom GENERATED ALWAYS
dalam pernyataan BUAT TABEL, sistem akan secara otomatis menambahkannya menggunakan nama default berikut.
Nama kolom default | Jenis data | Deskripsi |
---|---|---|
ledger_start_transaction_id | bigint | ID transaksi yang membuat versi baris |
ledger_start_sequence_number | bigint | Nomor urut suatu operasi dalam suatu transaksi yang membuat versi baris |
Tampilan ledger
Untuk setiap tabel ledger khusus tambahan, sistem secara otomatis membuuat tampilan, yang disebut tampilan ledger. Tampilan ledger melaporkan semua sisipan baris yang telah terjadi pada tabel. Tampilan ledger lebih berguna untuk tabel ledger yang dapat diperbarui daripada tabel ledger khusus tambahan karena tabel ledger khusus tambahan tidak memiliki kemampuan UPDATE
atau DELETE
. Tampilan ledger untuk tabel ledger khusus tambahan tersedia untuk konsistensi antara tabel ledger yang dapat diperbarui dan khusus tambahan.
Skema tampilan ledger
Catatan
Nama kolom tampilan ledger dapat diubah saat Anda membuat tabel menggunakan parameter <ledger_view_option>
dengan pernyataan BUAT TABEL (Transact-SQL). Untuk mengetahui informasi selengkapnya, lihat opsi tampilan ledger dan contoh terkait dalam CREATE TABLE (Transact-SQL).
Nama kolom default | Jenis data | Deskripsi |
---|---|---|
ledger_transaction_id | bigint | ID transaksi yang membuat atau menghapus versi baris. |
ledger_sequence_number | bigint | Jumlah urutan operasi tingkat baris di dalam transaksi pada tabel. |
ledger_operation_type | tinyint | Berisi 1 (INSERT) atau 2 (DELETE). Memasukkan baris ke dalam tabel ledger akan menghasilkan baris baru pada tampilan ledger yang berisi 1 pada kolom ini. Menghapus baris dari tabel ledger akan menghasilkan baris baru pada tampilan ledger yang berisi 2 pada kolom ini. Memperbarui baris pada tabel ledger menghasilkan dua baris baru pada tampilan ledger. Satu baris berisi 2 (DELETE) dan baris lainnya berisi 1 (INSERT) pada kolom ini. DELETE tidak boleh terjadi pada tabel ledger khusus tambahan. |
ledger_operation_type_desc | nvarchar(128) | Berisi INSERT atau DELETE . Untuk informasi selengkapnya, lihat baris sebelumnya. |