

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# LOCK
<a name="r_LOCK"></a>

限制对数据库表的访问。此命令只在事务块内部运行时才有意义。

LOCK 命令在“ACCESS EXCLUSIVE”模式下获取表级别的锁定；如果需要，会等待所有冲突的锁定释放。通过这种方式明确地锁定表时，会导致从其他事务或会话尝试对表执行的读取和写入操作等待。当一个用户明确地锁定表时，会阻止另一个用户从该表中选择数据或在该表中加载数据。当包含 LOCK 命令的事务完成后，会释放锁定。

引用表的命令会隐式地获取限制性较低的表锁定，例如写入操作。例如，如果某个用户尝试从表中读取数据，而另一个用户正在更新该表，那么读取的数据将是已提交的数据的快照。（在某些情况下，如果查询违反了可序列化隔离规则，则将停止。） 请参阅 [管理并发写入操作](c_Concurrent_writes.md)。

一些 DDL 操作（例如 DROP TABLE 和 TRUNCATE）会创建独占锁定。这些操作会阻止读取数据。

如果发生锁定冲突，Amazon Redshift 会显示错误消息，对启动冲突事务的用户发出提示。收到锁定冲突的事务将会停止。每次发生锁定冲突时，Amazon Redshift 会将一个条目写入到 [STL\$1TR\$1CONFLICT](r_STL_TR_CONFLICT.md) 表。

## 语法
<a name="section_r_LOCK-synopsis"></a>

```
LOCK [ TABLE ] table_name [, ...]
```

## 参数
<a name="parameters"></a>

TABLE   
可选关键字。

 *table\$1name*   
要锁定的表的名称。通过使用逗号分隔的表名列表可以锁定多个表。您不能锁定视图。

## 示例
<a name="example2"></a>

```
begin;

lock event, sales;

...
```