Postgresql

SELECT 語句可以阻止 ALTER TABLE 嗎?

  • November 16, 2019

我在Postgres 文件中看到:

兩個事務不能同時在同一張表上持有衝突模式的鎖

ALTER TABLE在維護(模式遷移)期間,我們看到了由於掛起SELECT事務(pg_locks+ )而無法進行的情況pg_stat_activity

為了繼續遷移,我們撤銷CONNECT了“流氓”使用者並踢掉了他們的所有會話。

是否正確:

BEGIN;
SELECT ...;

將阻塞ALTER TABLE直到COMMITor ROLLBACK

你答對了。

這就是 PostgreSQL 防止衝突的方式:您不能在有人使用表時刪除或修改表。

是的,在 Mysql 中 SELECT 本身被認為是一個事務。所以如果一個事務在一張表上,你不能得到元數據鎖來改變。

引用自:https://dba.stackexchange.com/questions/251847