如何鎖定某些列不被編輯,即使用戶有權訪問postgresql中的表的編輯權限。如何在postgresql中鎖定用戶未編輯的某些列
3
A
回答
1
您可以添加barfs如果禁止列被改爲觸發:
CREATE OR REPLACE FUNCTION cerberus() RETURNS trigger
LANGUAGE plpgsql AS
$$BEGIN
IF NEW.forbiddencol IS DISTINCT FROM OLD.forbiddencol
AND current_user = 'luser'
THEN
RAISE EXCEPTION '"luser" must not update "forbiddencol"';
END IF;
RETURN NEW;
END;$$;
CREATE TRIGGER cerberus BEFORE UPDATE OF mytable
FOR EACH ROW EXECUTE PROCEDURE cerberus();
+0
你可以請分享一些樣本片段嗎? –
+0
我已經添加了一個示例。 –
+1
如果old或new爲null,則不會阻止更新,因爲'1 <> null時選擇大小寫,那麼true否則false end將返回'false'。 –
3
PostgreSQL支持列安全性(以及行安全)
讓我們把我們有限的作用authors
create table staff (
name text primary key,
salary decimal(19,4)
);
create role authors;
grant select, insert, delete, update(name) on table staff to authors;
set role authors;
insert into staff values ('frank', 100); -- works!
select * from staff; -- works!
update staff set name='jim'; -- works!
update staff set salary=999; -- permission denied
相關問題
- 1. 僅在SlickGrid中編輯某些列
- 2. 阻止用戶編輯Rails表中的某些列
- 3. 某些用戶編輯數據庫
- 4. 只允許某些用戶編輯ASPxGridView
- 5. Sharepoint 2010.如何在用戶編輯它時將項目鎖定在列表中?
- 6. 鎖定某些細胞在一系列
- 7. 如何在JQGrid的行編輯中禁用某些單元格的編輯?
- 8. 如何使列表框中的某些行不可編輯
- 9. MySQL的死鎖某些列
- 10. 使用Mindmup可編輯表格使某些列不可編輯
- 11. 如何使一些列不可編輯,並在QTableView中編輯一些列?
- 12. 強制用戶在編輯前鎖定SVN中的文件
- 13. 如何在CRUD編輯頁面中禁用某些字段?
- 14. 如何讓某些文本在Jtextpane中不能被用戶編輯?
- 15. jqGrid - 僅編輯可編輯列的某些行
- 16. 禁用JTable中的某些列上的編輯
- 17. 鎖定頁面/實體,如果其他用戶正在編輯
- 18. 如果用戶正在編輯項目,鎖定詳細視圖
- 19. 如何隱藏Drupal中「用戶編輯」表單上的某些字段?
- 20. Typo3:不起作用某些用戶的RTE編輯器
- 21. 停止編輯框中的某些鍵
- 22. 如何在android studio中編輯鎖類
- 23. iOS AVPlayer在某些時刻鎖定我的鎖定
- 24. 如何解鎖超級用戶「Postgres的帳戶在PostgreSQL的
- 25. Janus GridEX - 存儲過程記錄集 - 如何編輯某些列
- 26. MVC 3,如何不顯示某些模型列進行編輯?
- 27. 如何編輯鎖定性能:配置
- 28. 如何鎖定表單進行編輯?
- 29. 如何鎖定我的Android應用程序的某些功能
- 30. ASP.NET MVC:防止用戶編輯模型上的某些字段
唯一可靠的方法是撤銷更新這些列的權限。 –
我不認爲你可以用'GRANT' /'REVOKE'來做到這一點。但是你可以用不同的所有者/權限創建一個可寫視圖,這可以省略一些列和/或使某些只能讀取(具有明確的「INSTEAD OF」觸發器或規則)。 – pozs
或猴子用觸發器破解 - 返回null而不是NEW –