lock.hlp
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. .pgaw:Help.f.t insert end "LOCK" {bold} " Postgres always uses the least restrictive lock mode whenever possible. LOCK TABLE provided for cases when you might need more restrictive locking. 
  2. For example, an application runs a transaction at READ COMMITTED isolation level and needs to ensure the existance of data in a table for the duration of the transaction. To achieve this you 
  3. could use SHARE lock mode over the table before querying. This will protect data from concurrent changes and provide any further read operations over the table with data in their actual current 
  4. state, because SHARE lock mode conflicts with any ROW EXCLUSIVE one acquired by writers, and your LOCK TABLE table IN SHARE MODE statement will wait until any concurrent 
  5. write operations commit or rollback. 
  6. " {} "Synopsis" {bold} "
  7. " {} "
  8. LOCK [ TABLE ] table
  9. LOCK [ TABLE ] table IN [ ROW | ACCESS ] { SHARE | EXCLUSIVE } MODE
  10. LOCK [ TABLE ] table IN SHARE ROW EXCLUSIVE MODE
  11. " {code} "Usage" {bold} "
  12.     --
  13.     -- SHARE lock primary key table when going to perform
  14.     -- insert into foreign key table.
  15.     --
  16. " {} "    BEGIN WORK;
  17.     LOCK TABLE films IN SHARE MODE;
  18.     SELECT id FROM films 
  19.       WHERE name = 'Star Wars: Episode I - The Phantom Menace';
  20.     --
  21.     -- Do ROLLBACK if record was not returned
  22.     --
  23.     INSERT INTO films_user_comments VALUES 
  24.       (_id_, 'GREAT! I was waiting for it for so long!');
  25.     COMMIT WORK;
  26.   
  27.     --
  28.     -- SHARE ROW EXCLUSIVE lock primary key table when going to perform
  29.     -- delete operation.
  30.     --
  31.     BEGIN WORK;
  32.     LOCK TABLE films IN SHARE ROW EXCLUSIVE MODE;
  33.     DELETE FROM films_user_comments WHERE id IN
  34.       (SELECT id FROM films WHERE rating < 5);
  35.     DELETE FROM films WHERE rating < 5;
  36.     COMMIT WORK;
  37. " {code} "Notes" {bold} "
  38. LOCK is a Postgres language extension. 
  39. Except for ACCESS SHARE/EXCLUSIVE lock modes, all other Postgres lock modes and the LOCK TABLE syntax are compatible with those present in Oracle. 
  40. LOCK works only inside transactions. "