LOCK

中文man手册

LOCK

NAME
SYNOPSIS
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