LOCK
目录
LOCK
NAMESYNOPSIS
DESCRIPTION æè¿°
PARAMETERS åæ°
NOTES 注æ
EXAMPLES ä¾å
COMPATIBILITY å¼å®¹æ§
è¯è
è·
NAME
LOCK - æç¡®å°éå®ä¸ä¸ªè¡¨
SYNOPSIS
LOCK [ TABLE ] name [, ...] [ IN lockmode MODE ]
where lockmode is one of:
ACCESS SHARE |
ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
| SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS
EXCLUSIVE
DESCRIPTION æè¿°
LOCK TABLE è·åä¸ä¸ªè¡¨çº§éï¼å¿è¦æ¶çå¾ä»»ä½å²çªçééæ¾ã 䏿¦è·åäºè¿ä¸ªéï¼å®å°±ä¼å¨å½åäºå¡çä½ä¸é¨åä¸ç´ä¿æã ï¼æ²¡æ UNLOCK TABLE å½ä»¤ï¼éæ»æ¯å¨äºå¡ç»å°¾éæ¾ãï¼
å¨ä¸ºé£äºå¼ç¨äºè¡¨çå½ä»¤èªå¨è¯·æ±éçæ¶åï¼PostgreSQL æ»æ¯å°½å¯è½ä½¿ç¨æå°éå¶ç鿍¡å¼ãLOCK TABLE æ¯ä¸ºä½ å¨éè¦æ´ä¸¥æ ¼çéçåºåæä¾çã ä¾å¦ï¼å设ä¸ä¸ªåºç¨å¨è¯»å·²æäº¤é离级å«ä¸è¿è¡äºå¡ï¼ å¹¶ä¸å®éè¦ä¿è¯å¨è¡¨ä¸çæ°æ®å¨äºå¡çè¿è¡è¿ç¨ä¸é½åå¨ãè¦å®ç°è¿ä¸ªç®çï¼ ä½ å¯ä»¥å¨æ¥è¯¢ä¹åå¯¹è¡¨ä½¿ç¨ SHARE 鿍¡å¼è¿è¡éå®ã è¿æ ·å°ä¿æ¤æ°æ®ä¸è¢«å¹¶è¡ä¿®æ¹å¹¶ä¸ä¸ºä»»ä½æ´è¿ä¸æ- ¥ç对表ç读æä½æä¾å®éçå½åç¶æçæ°æ®ï¼ å 为 SHARE 鿍¡å¼ä¸ä»»ä½åæä½éè¦ç ROW EXCLUSIVE 模å¼å²çªï¼ å¹¶ä¸ä½ ç LOCK TABLE name IN SHARE MODE è¯- å¥å°çå°ææå¹¶è¡çåæä½æäº¤æåå·åææ§è¡ãå æ¤ï¼ä¸æ¦ä½ è·å¾è¯¥éï¼é£ä¹å°±ä¸ä¼å- 卿ªæäº¤çåæä½ï¼
妿è¿è¡å¨å¯ä¸²è¡åé离级å«å¹¶ä¸ä½ éè¦è¯»åçå®ç¶æçæ°æ®æ¶ï¼ ä½ å¿é¡»å¨æ§è¡ä»»ä½æ°æ®ä¿®æ¹è¯å¥ä¹åè¿è¡ä¸ä¸ª LOCK TABLE è¯å¥ã ä¸ä¸ªå¯ä¸²è¡åäºå¡çæ°æ®å¾è±¡å°å¨å¶ç¬¬ä¸ä¸ªæ°æ®ä¿®æ¹è¯å¥å¼å§çæ¶åå»ç»ä½ã ç¨åç LOCK TABLE å°ä»ç¶é»æ¢å¹¶åçå ï¼ï¼ï¼ ä½å®ä¸è½ä¿è¯äºå¡è¯»åçä¸è¥¿å¯¹åºæè¿æäº¤çæ°å¼ã
妿ä¸ä¸ªæ¤ç±»çäºå¡åå¤ä¿®æ¹ä¸ä¸ªè¡¨ä¸çæ°æ®ï¼é£ä¹åºè¯¥ä½¿ç¨ SHARE ROW EXCLUSIVE 鿍¡å¼ï¼è䏿¯ SHARE 模å¼ã è¿æ ·å°±ä¿è¯ä»»ææ¶å»åªæä¸ä¸ªæ- ¤ç±»çäºå¡è¿è¡ãä¸è¿æ ·åå°±å¯è½ä¼æ»éï¼ å½ä¸¤ä¸ªå¹¶è¡çäºå¡å¯è½é½è¯·æ± SHARE 模å¼ï¼ç¶åè¯å¾æ´æ¹è¡¨ä¸çæ°æ®æ¶ï¼ 两个äºå¡å¨å®éæ§è¡æ´æ°çæ¶åé½éè¦ ROW EXCLUSIVE 鿍¡å¼ï¼ 使¯å®ä»¬æ æ³å次è·åè¿ä¸ªéãï¼è¯·æ³¨æï¼ä¸ä¸ªäºå¡èªå·±ç鿝ä»ä¸å²çªçï¼ å æ¤ä¸ä¸ªäºå¡å¯ä»¥å¨ææ SHARE 模å¼çéçæ¶åè¯·æ± ROW EXCLUSIVE 模å¼ï¼ï¼ä½æ¯ä¸è½å¨ä»»ä½å¶å®äºå¡ææ SHARE 模å¼çæ¶å请æ±ãï¼ ä¸ºäºé¿åæ- »éï¼ææäºå¡åºè¯¥ä¿è¯ä»¥ç¸åç顺åºå¯¹ç¸åç对象请æ±éï¼ å¹¶ä¸ï¼å¦ææ¶åå¤ç§é模å¼ï¼é£ä¹äºå¡åºè¯¥æ»æ¯æåè¯·æ±æä¸¥æ ¼ç鿍¡å¼ã
æå³é模å¼åéå®çç¥çæ´å¤ä¿¡æ¯ï¼è¯·åè Section 12.3 ‘‘Explicit Locking’’ ã
PARAMETERS åæ°
|
name |
è¦éå®çç°å表çååï¼å¯ä»¥ææ¨¡å¼ä¿®é¥°ï¼ã
å½ä»¤ LOCK a, b; çæäº LOCK a; LOCK b;ã è¡¨æ¯æç§ LOCK å½ä»¤ä¸- 声æç顺åºä¸ä¸ªæ¥ä¸ä¸ªé¡ºåºä¸éçã
lockmode
鿍¡å¼å£°æè¿ä¸ªéåé£äºéå²çªã鿍¡å¼å¨ Section 12.3 ‘‘Explicit Locking’’ éæè¿°ã
å¦ææ²¡æå£°æé模å¼ï¼é£ä¹ä½¿ç¨æä¸¥æ ¼çæ¨¡å¼ ACCESS EXCLUSIVEã
NOTES 注æ
LOCK ... IN ACCESS SHARE MODE éè¦å¨ç®æ è¡¨ä¸æ SELECT æéãææå¶å®å½¢å¼ç LOCK éè¦ UPDATE å/æ DELETE æéã
LOCK åªæ¯å¨ä¸ä¸ªäºå¡åçåé¨æç¨ ï¼BEGIN...COMMITï¼ï¼å 为éå¨äºå¡ç»æçæ¶å马ä¸è¢«éæ¾ã åºç°å¨ä»»æäºå¡åå¤é¢ç LOCK é½èªå¨çæä¸ä¸ªèªåå«çäºå¡ï¼å æ- ¤è¯¥éå¨è·åä¹å马ä¸è¢«ä¸¢å¼ã
LOCK TABLE åªå¤ç表级çéï¼å æ¤é£äºæ ROW å- æ ·çé齿¯ç¨è¯ä¸å½ãè¿äºæ¨¡å¼åå- é常åºè¯¥åºè¯¥çè§£ä¸ºç¨æ·è§å¾å¨ä¸ä¸ªè¢«éå®ç表ä¸è·åè¡çº§çéã åæ · ROW EXCLUSIVE 模å¼ä¹æ¯ä¸ä¸ªå¯å±äº«ç表级éã æä»¬ä¸å®è¦è®°ä½ï¼åªè¦æ¯æ¶åå° LOCK TABLEï¼ é£ä¹ææé模å¼é½æç¸åçè¯æï¼åºå«åªæ¯å®ä»¬ä¸åªç§éå²çªçè§åã
EXAMPLES ä¾å
æ¼ç¤ºå¨å¾ä¸ä¸ªå¤é®è¡¨ä¸æå¥æ¶å¨æä¸»é®ç表ä¸ä½¿ç¨ SHARE çéï¼
BEGIN WORK;
LOCK TABLE films IN SHARE MODE;
SELECT id FROM films
WHERE name = ’Star Wars: Episode I - The Phantom
Menace’;
-- Do ROLLBACK if record was not returned
INSERT INTO films_user_comments VALUES
(_id_, ’GREAT! I was waiting for it for so
long!’);
COMMIT WORK;
卿§è¡å 餿使¶å¯¹ä¸ä¸ªæä¸»é®ç表è¿è¡ SHARE ROW EXCLUSIVE éï¼
BEGIN WORK;
LOCK TABLE films IN SHARE ROW EXCLUSIVE MODE;
DELETE FROM films_user_comments WHERE id IN
(SELECT id FROM films WHERE rating < 5);
DELETE FROM films WHERE rating < 5;
COMMIT WORK;
COMPATIBILITY å¼å®¹æ§
å¨ SQL æ åé颿²¡æLOCK TABLE ï¼å¯ä»¥ä½¿ç¨ SET TRANSACTION æ¥å£°æå½åäºå¡ç级å«ã PostgreSQL 乿¯æè¿ä¸ªï¼åé SET TRANSACTION [set_transaction(7)] è·å详ç»ä¿¡æ¯ã
é¤äº ACCESS SHAREï¼ACCESS EXCLUSIVEï¼å SHARE UPDATE EXCLUSIVE 鿍¡å¼å¤ï¼ PostgreSQL 鿍¡å¼å LOCK TABLE è¯å¥é½ä¸é£äºå¨ Oracle éé¢çå¼å®¹ã
è¯è
Postgresql 䏿ç½ç« ä½ä¼å¹³ <laser@pgsqldb.org>
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh