<DATE>1998-09-24</DATE>
</REFSYNOPSISDIVINFO>
<SYNOPSIS>
- LOCK [ TABLE ] <REPLACEABLE CLASS="PARAMETER">table</REPLACEABLE>
+ LOCK [ TABLE ] [[IN] [ROW|ACCESS] [SHARE|EXCLUSIVE] MODE] <REPLACEABLE CLASS="PARAMETER">table</REPLACEABLE>
</SYNOPSIS>
<REFSECT2 ID="R2-SQL-LOCK-1">
<PARA>
<VARIABLELIST>
- <VARLISTENTRY>
- <TERM>
- DELETE 0
- </TERM>
- <LISTITEM>
- <PARA>
- Message returned on a successful lock.
- <command>LOCK</command> is implemented as a
- <command>DELETE FROM <REPLACEABLE CLASS="PARAMETER">table</REPLACEABLE></command>
- which is guaranteed to not delete any rows.
- </para>
- </listitem>
- </varlistentry>
- <VARLISTENTRY>
<TERM>
ERROR <REPLACEABLE CLASS="PARAMETER">table</REPLACEABLE>: Table does not exist.
</TERM>
Description
</TITLE>
<PARA>
- <command>LOCK</command> locks in exclusive mode a table inside
- a transaction. The classic use for this is
+ By default, <command>LOCK</command> locks in exclusive mode a table inside
+ a transaction. Various options allow shared access, or row-level locking
+ control. The classic use for this is
the case where you want to select some data, then
update it inside a transaction.
If you don't explicit lock a table using LOCK statement, it will be
<PARA>
There is no <command>LOCK TABLE</command> in <acronym>SQL92</acronym>,
which instead uses <command>SET TRANSACTION</command> to specify
- concurrency level on transactions.
+ concurrency level on transactions. We support that too.
</para>
</refsect2>
</refsect1>
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: psqlHelp.h,v 1.66 1999/06/03 18:37:59 momjian Exp $
+ * $Id: psqlHelp.h,v 1.67 1999/06/03 19:17:59 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{"lock",
"exclusive lock a table inside a transaction",
"\
-\tLOCK [TABLE] class_name;"},
+\tLOCK [TABLE] class_name \n\
+\t[[IN] [ROW|ACCESS] [SHARE|EXCLUSIVE] MODE];"},
{"move",
"move an cursor position",
"\
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/lock.l,v 1.5 1998/03/23 15:09:34 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/lock.l,v 1.6 1999/06/03 19:18:00 momjian Exp $
.TH FETCH SQL 01/23/93 PostgreSQL PostgreSQL
.SH NAME
lock - exclusive lock a table
.SH SYNOPSIS
.nf
-\fBlock\fR [\fBtable\fR] classname
+\fBlock\fR [\fBtable\fR] classname [[IN] [ROW|ACCESS] [SHARE|EXCLUSIVE] MODE]
.fi
.SH DESCRIPTION
+By default,
.BR lock
-exclusive locks a table inside a transaction. The classic use for this
+exclusive locks an entire table inside a transaction.
+Various options allow shared access, or row-level locking control.
+.PP
+The classic use for this
is the case where you want to \fBselect\fP some data, then update it
inside a transaction. If you don't exclusive lock the table before the
\fBselect\fP, some other user may also read the selected data, and try