Postgres中的不变性

时间:2019-03-18 19:59:23

标签: postgresql database-permissions

我想创建不可变的Postgres数据库,用户只能在其中插入/选择(写入/读取)数据,而不能更新/删除(更改/删除)数据。

我知道有FOR UPDATE锁,但没有知道如何使用它。

例如,我有下表,如何使其不可变(或者,如果我理解正确,如何永久使用FOR UPDATE锁)

CREATE TABLE account(
 user_id serial PRIMARY KEY,
 username VARCHAR (50) UNIQUE NOT NULL,
 password VARCHAR (50) NOT NULL,
 email VARCHAR (355) UNIQUE NOT NULL,
 created_on TIMESTAMP NOT NULL,
 last_login TIMESTAMP
);

1 个答案:

答案 0 :(得分:2)

解决方案是为访问数据库的用户仅赋予所涉及表的INSERTSELECT特权。

锁不是拒绝某人访问的工具,而是一种短期障碍,可防止同时发生冲突的数据修改。