2016-03-09 34 views
0

我們使用的是PostgreSQL 9.4。即使是店主也要在PostgreSQL 9.4上預防ALTER TABLE

我們需要防止用戶在表上執行ALTER,甚至不是表的所有者。

表的所有者必須'授予'他自己的權限來執行ALTER。

我想這應該就像在表的模式上設置'只讀標誌'。

正在討論的表正在從另一個表中繼承,如果這具有任何重要性。

理想的解決方案將允許不喜歡「你不能改變的表,因爲......」

這是可以實現的消息?如果是這樣,怎麼樣?

+2

也許會引發錯誤的[Event Trigger](http://www.postgresql.org/docs/current/static/event-trigger-definition.html)? –

+0

@a_horse_with_no_name這實際上可能是完美的!謝謝! – arod

回答

0

這可能不是你真正想要的,但一個潛在的有趣的效果:

當創建一個繼承的表,你必須這樣做,因爲父表的所有者,但你可以改變的主人孩子桌子。新所有者將無法刪除/修改繼承的列集,但仍然可以更改默認值/檢查/觸發器/等等,並添加新列。

最接近實際需求的最簡單方法可能是通過所有者角色來控制訪問:創建一個單獨的角色來訪問表,並從所有者中撤銷數據庫的CONNECT特權。