Saya memiliki kolom harga sensitif yang ingin saya perbarui hanya melalui prosedur tersimpan. Saya ingin semua kode atau upaya manual untuk mengubah nilai dalam kolom harga ini gagal jika tidak menggunakan prosedur tersimpan yang dirancang untuk memperbaruinya.
Saya sedang mempertimbangkan mengimplementasikan ini menggunakan trigger dan token table. Ide yang saya pertimbangkan adalah memiliki token table. prosedur yang tersimpan harus terlebih dahulu memasukkan nilai dalam tabel token. Kemudian perbarui kolom harga. Pemicu pembaruan akan memeriksa apakah token ada di tabel token untuk baris yang diperbarui. Jika ditemukan, itu akan berlanjut. jika token tidak ditemukan, itu akan melempar pengecualian dan membuat transaksi pembaruan gagal.
Apakah ada cara yang baik / lebih baik untuk menerapkan pembatasan ini?
Jawaban:
SQL Server memungkinkan izin tingkat kolom. Sebagai contoh:
sumber
SampleRole
dengan pengguna itu ...sumber
Jika semua pengguna Anda memiliki login yang sama (aduh, BTW) maka di sini ada pilihan lain
dbo
, maka Anda sudah dilindungi).Pengguna aplikasi reguler akan kekurangan hak pembaruan untuk tabel itu, sehingga mereka tidak akan dapat memperbaruinya dengan cara lain.
sumber