使用SQLAlchemy作为我的PostgreSQL数据库的ORM,我想在我的模型定义中添加一个约束(或类似的东西)来阻止用户:
1)将值插入到他们不应插入的列中(例如,我的自动递增主键或自动设置更新的date_modified。)
2)更新相同列中的值。
基本上 - 如果他们试图触摸特定列,我希望插入和/或更新失败。
修改
澄清一下:我想通过我的模型(继承SQLAlchemy' Base)来宣布这个。
答案 0 :(得分:2)
PostgreSQL支持declarative column security(以及行安全性)
使用此模板:
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
ON [ TABLE ] table_name [, ...]
TO role_specification [, ...] [ WITH GRANT OPTION ]
示例:
GRANT INSERT (colA, colB) ON TABLE foo TO michi;
答案 1 :(得分:-1)
我能想到的最简单方法是使用:
final int (name) = x;
这样,在运行时无法更改该值。