本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
LOCK
限制對資料庫資料表的存取。此命令只有在交易區塊內執行時才有意義。
此LOCK命令會取得 " EXCLUSIVE"ACCESS 模式中的資料表層級鎖定,必要時會等待任何衝突鎖定解除。若以此方式明確鎖定資料表,則從其他交易或工作階段嘗試時,會造成資料表的讀取和寫入等待。若某位使用者建立明確的資料表鎖定,則會暫時阻止其他使用者從該資料表選取資料或將資料載入其中。當包含 LOCK命令的交易完成時,鎖定即會釋放。
參考資料表的命令 (例如寫入操作) 會以隱含方式取得限制較少的資料表鎖定。例如,若使用者嘗試從資料表讀取資料時,有另一位使用者正在更新資料表,則讀取的資料會是已遞交資料的快照 (在某些情況下,若查詢違反可序列化隔離規則,則會停止)。請參閱 管理並行寫入操作。
有些DDL操作,例如 DROPTABLE和 TRUNCATE,會建立專屬鎖定。這些操作會阻止資料讀取。
若發生鎖定衝突,Amazon Redshift 會顯示錯誤訊息,提醒進行發生衝突之交易的使用者。收到鎖定衝突的交易會停止。每次發生鎖定衝突時,Amazon Redshift 都會在 STL_TR_CONFLICT 資料表中寫入一項記錄。
語法
LOCK [ TABLE ] table_name [, ...]
參數
- TABLE
-
選用的關鍵字。
- table_name
-
要鎖定的資料表名稱。您可以使用逗號分隔的資料表名稱清單鎖定多個資料表。不過您無法鎖定檢視。
範例
begin; lock event, sales; ...