LockRows
Description
The LockRows operator is used to lock rows in a query result set to prevent other transactions from modifying or deleting these rows.
Typical Scenarios
- When SELECT ... FOR SHARE/UPDATE is used to lock rows in a transaction, other transactions cannot modify or delete these rows.
- When FOR SHARE is used to lock a row, the current transaction and other transactions cannot modify or delete the locked row.
- When FOR UPDATE is used to lock a row, no transaction can modify or delete the locked row except the current transaction.
Examples
SELECT FOR UPDATE syntax.
-- Prepare data. gaussdb=# CREATE TABLE t(a int, b int, c int); CREATE TABLE gaussdb=# INSERT INTO t VALUES(generate_series(1, 10), generate_series(601, 610), generate_series(901, 910)); INSERT 0 10 -- Execution result. gaussdb=# EXPLAIN SELECT * FROM t WHERE a = 1 FOR UPDATE; QUERY PLAN ---------------------------------------------------------- LockRows (cost=0.00..34.41 rows=10 width=18) -> Seq Scan on t (cost=0.00..34.31 rows=10 width=18) Filter: (a = 1) (3 rows) -- Drop. gaussdb=# DROP TABLE t;
Example: SELECT FOR SHARE syntax.
-- Prepare data. gaussdb=# DROP TABLE IF EXISTS t; gaussdb=# CREATE TABLE t(a int, b int, c int); CREATE TABLE gaussdb=# INSERT INTO t VALUES(generate_series(1, 10), generate_series(601, 610), generate_series(901, 910)); INSERT 0 10 -- Execution result. gaussdb=# EXPLAIN SELECT * FROM t WHERE a = 1 FOR SHARE; QUERY PLAN ---------------------------------------------------------- LockRows (cost=0.00..34.41 rows=10 width=18) -> Seq Scan on t (cost=0.00..34.31 rows=10 width=18) Filter: (a = 1) (3 rows) -- Drop. gaussdb=# DROP TABLE t;
In the preceding example, the output of the LockRows operator is as follows.
Item |
Description |
---|---|
LockRows |
Operator name. |
Seq Scan |
Operator name. |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot