---
title: OceanBase 不支持 SELECT ... FOR UPDATE 的 SKIP LOCKED 子句的解决方法 -OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 不支持 SELECT ... FOR UPDATE 的 SKIP LOCKED 子句的解决方法 相关的常见问题和使用技巧，帮助您快速解决OceanBase 不支持 SELECT ... FOR UPDATE 的 SKIP LOCKED 子句的解决方法 的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 不支持 SELECT ... FOR UPDATE 的 SKIP LOCKED 子句的解决方法

更新时间：2023-11-14 03:16

适用版本： V2.2.x 内容类型：How-to  

本文主要介绍 OceanBase 数据库由于不支持 SELECT ... FOR UPDATE 的 SKIP LOCKED 子句而引起迁移问题的解决方式。

## 适用版本

OceanBase 数据库 V2.2.73 前的版本。

OceanBase 数据库 V2.2.73 版本起，支持 `SELECT ... FOR UPDATE` 的 `SKIP LOCKED` 子句。

## 规避方式

有两种解决方式：

- 将 SQL 语句中的 `FOR UPDATE` 替换为 `FOR UPDATE NOWAIT`。
 - 添加 version 字段或时间戳字段作为更改指示器，手动设置乐观锁，例如：

  ```unknow
  UPDATE addressTableSET address_line1 = `<<new address line 1>>`,city = `<<new city>>`,state = `<<new state>>`,zip = `<<new zip>>`,version = version + 1WHERE address_id = `<<some key>>`AND version = `<<version you read initially>>`;

  ```

#### 注意

- 从数据源访问时间戳存在性能问题。
 - timestamp 类型的锁受到数据库存储 timestamp 类型的精度限制，因此建议使用 numeric 类型的锁。

Previous

[OBServer 在执行 select for update 对主键加锁的场景下，可能会导致主表中数据的大小写发生变化](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000048155)

Next

[租户查询触发器报错 Incorrect value](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005405207) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
