我有多个表,我希望用户能够通过 rest api 更新这些表,并且许多(如果不是全部)的列具有合理的默认值。
Web 应用程序本身可以设计为隐藏这些列,但我也希望允许直接访问 API,以便其他人可以按照他们认为合适的方式使用数据。
不幸的是,这意味着他们可以显式设置默认列(将时间戳列设置为 1972,或将 id 列设置为任意值)。
在后端 (Postgres 9.4) 有什么机制可以限制它?
最佳答案
您应该在 API 级别执行此操作。
如果有人发出格式错误的请求(例如,他们想要覆盖 ID 或时间戳),请使用正确的状态代码(可能是 400
)进行回答,并用有意义的消息进行修改,例如“嘿您尝试更新 ,它是只读的。”
如果您真的坚持在数据库级别处理它,here他们建议:
The easiest way is to create BEFORE UPDATE trigger that will compare OLD and NEW row and RAISE EXCEPTION if the change to the row is forbidden.
关于postgresql - 如何防止特定列通过 REST API 更新显式设置它们的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187371/