将列设置为可空值会锁定表以进行读取吗?

时间:2018-10-11 13:12:55

标签: postgresql

我想使数据库中的一个字段为空。

ALTER TABLE answers ALTER COLUMN author_id DROP NOT NULL;

问题是我的数据库中有很多数据,我不确定alter命令是否会阻塞表进行写操作。

我知道更改列的大小或类型将导致行排它锁https://www.postgresql.org/docs/current/static/explicit-locking.html#LOCKING-TABLES

我是否也将表锁定为写操作还是可以安全使用?

1 个答案:

答案 0 :(得分:2)

是的,ALTER将需要在表上具有排他锁(包括阻止对表的写访问)

但是,锁定的持续时间非常短,并且与表的大小无关。本质上,这只是内部系统表的更新。