Postgres 中的不变性
Immutability in Postgres
我想创建 Immutable Postgres 数据库,其中用户只能 insert/select (write/read) 数据,但不能 update/delete (change/delete ) 数据。
我知道有 FOR UPDATE
锁,但不知道如何使用它。
举例来说,我有下面的 table,我怎样才能使它成为 immutable(或者,如果我理解正确,我怎样才能使用 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
);
解决方案是只给访问数据库的用户对涉及的表的INSERT
和SELECT
权限。
锁不是拒绝某人访问的工具,而是防止同时发生冲突数据修改的短期屏障。
我想创建 Immutable Postgres 数据库,其中用户只能 insert/select (write/read) 数据,但不能 update/delete (change/delete ) 数据。
我知道有 FOR UPDATE
锁,但不知道如何使用它。
举例来说,我有下面的 table,我怎样才能使它成为 immutable(或者,如果我理解正确,我怎样才能使用 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
);
解决方案是只给访问数据库的用户对涉及的表的INSERT
和SELECT
权限。
锁不是拒绝某人访问的工具,而是防止同时发生冲突数据修改的短期屏障。