我想创建不可变的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
);
答案 0 :(得分:2)
解决方案是为访问数据库的用户仅赋予所涉及表的INSERT
和SELECT
特权。
锁不是拒绝某人访问的工具,而是一种短期障碍,可防止同时发生冲突的数据修改。