Postgresql
SELECT 語句可以阻止 ALTER TABLE 嗎?
我在Postgres 文件中看到:
兩個事務不能同時在同一張表上持有衝突模式的鎖
ALTER TABLE
在維護(模式遷移)期間,我們看到了由於掛起SELECT
事務(pg_locks
+ )而無法進行的情況pg_stat_activity
。為了繼續遷移,我們撤銷
CONNECT
了“流氓”使用者並踢掉了他們的所有會話。是否正確:
BEGIN; SELECT ...;
將阻塞
ALTER TABLE
直到COMMIT
orROLLBACK
?
你答對了。
這就是 PostgreSQL 防止衝突的方式:您不能在有人使用表時刪除或修改表。
是的,在 Mysql 中 SELECT 本身被認為是一個事務。所以如果一個事務在一張表上,你不能得到元數據鎖來改變。