Saya mencoba untuk menetapkan hak istimewa dalam database saya untuk pengguna sehingga mereka hanya dapat memperbarui, menyisipkan, menghapus dan, tentu saja, pilih pada tabel geografis.
Karena saya menggunakan beberapa jenis SERIAL untuk ID saya, saya lebih suka untuk bahkan tidak memberikan pengguna kemungkinan untuk mengedit bidang ini secara manual. Jadi saya mendefinisikan keistimewaan kolom-bijaksana. Ini berfungsi dengan baik pada bagian UPDATE, tetapi tombol di QGIS memungkinkan penciptaan objek baru tetap abu-abu. Satu-satunya cara tampaknya berfungsi adalah ketika saya tidak menentukan bidang apa pun dalam definisi hak istimewa. Bahkan ketika saya memilih semua bidang itu tidak berfungsi (meskipun saya akan berpikir bahwa tidak menentukan kolom apa pun dan menetapkan semuanya akan sama).
Tampaknya ada sesuatu yang saya tidak mengerti, atau ada batasan dalam definisi hak istimewa untuk interaksi yang tepat antara DB dan QGIS. Adakah yang memiliki informasi atau saran yang dapat membantu saya memahami apa yang sedang terjadi, dan / atau (bahkan lebih baik) membantu saya mencapai tujuan saya?
Saya selalu bisa mengatasinya dengan menetapkan bidang sebagai tidak dapat diedit dalam definisi gaya, tetapi karena siapa pun dapat mengaturnya sesuka mereka, saya lebih suka alternatif yang lebih aman.
Menjalankan QGIS 2.14, PostGIS 2.3 untuk PostgreSQL 9.5.
GRANT INSERT (col2, col3, col4) ON table TO users
Jawaban:
Pengguna yang harus memiliki hak INSERT harus memiliki hak penuh ke kolom kunci utama. Kalau tidak, dia tidak akan bisa melakukan penyisipan. Saya tidak berpikir ada jalan keluarnya. Anda hanya dapat membatasi visibilitas kolom itu di QGIS, seperti yang telah Anda sebutkan.
Mengenai komentar Anda:
column-specific trigger ON INSERT DO NOTHING and ON UPDATE DO NOTHING for the primary key
Saya tidak yakin itu akan berhasil. Saat memasukkan baris baru, kunci primer baru harus dibuat, jelas. Anda tidak ingin mengelak dari itu.sumber